如何在phpspreadsheet中为我的两条线散点图制作正确的X轴

时间:2019-07-18 01:49:09

标签: php phpspreadsheet

使用PHPSpreadsheet制作两条折线图。我输入了电子表格单元格中的x和Y值。 PHPSpreadsheet生成带有难看的X轴的图表。 Y数据,即大约17摄氏度到大约45摄氏度。Y轴是0到50,以5度为增量,非常理想。但是,X数据是0到34分钟,以2分钟为增量。 X轴为0到35分钟,以1分钟为增量。我要附上一张图片。

The bad axis

Good X axis

这是X轴刻度线和数据集:

    $xAxisTickValues = [
new
DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER,      'Worksheet!$C$1:$C$18', null, 18),
new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER,  'Worksheet!$F$1:$F$18', null, 18) 
];
dataSeriesValues = [ 
new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER, 'Worksheet!$D$1:$D$18' ,null , 18),
new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_NUMBER,  'Worksheet!$G$1:$G$18' ,null , 18)
];

不涉及任何错误。预期或期望的结果是X轴从0到40,以5度为增量。

通过右键单击不良图表,选择xy散点图,然后单击“确定”,可以得到良好的图表x轴。 Excel自动创建了好轴吗?

请有人指导我使用PHPSpreadsheet获取正确的轴。

1 个答案:

答案 0 :(得分:0)

我几乎知道我问题的答案。 x和y轴都应由以下代码控制:

    $xaxis = new Axis();
$xaxis->setAxisOptionsProperties('low', 0, 'autoZero', null, 'in', 'out', 0, 40, 5, 0);

$title = new Title('Calorimetric Calibration');
$yAxisLabel = new Title(html_entity_decode('Temp (°C)',ENT_QUOTES,'UTF-8'));
$xAxisLabel = new Title('Time (Min)');

   // Create the chart
 $chart = new Chart(
  'chart1', // name
  $title, // title
  $legend, // legend
  $plotArea, // plotArea
  true, // plotVisibleOnly
  0, // displayBlanksAs
  $xAxisLabel, // xAxisLabel
  $yAxisLabel,  // yAxisLabel
  $yaxis, 
  $xaxis,
  null, 
  null
);

我可以改变y轴的所有方面。但是我不能对x轴的max和min做任何事情。看来它们受以下各项控制:

    $xAxisTickValues = [
new
DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$C$1:$C$18', null, 18), 

new DataSeriesValues(DataSeriesValues::DATASERIES_TYPE_STRING, 'Worksheet!$F$1:$F$18', null, 18)
];

如果删除刻度线控件,则它们似乎x轴由数据点数控制。 因此,这几乎就是我的答案。如何获取setAxisOptionsProperties来接管并允许我根据需要设置最大值和最小值?