PHPExcel 散点图:如何绘制具有不规则间隔的数据
PHPExcel Scatterplot: How to Plot Data With Irregular Intervals
PHPExcel 提供了一个非常简单和有用的 example 来说明如何创建包含基于少量数据的简单散点图的 Excel 文件。但是,问题在于此示例对其 x 轴使用规则间隔的 "string" 值 (Q1 - Q4)。
我想做的是用不规则间隔的数字 x 轴值创建一个散点图,所以我修改了这样的代码:
$objWorksheet->fromArray(
array(
array('', 2010, 2011, 2012),
array('0', 12, 15, 21),
array('10', 56, 73, 86),
array('30', 52, 61, 69),
array('70', 30, 32, 0),
)
);
$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B', NULL, 1), // 2010
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C', NULL, 1), // 2011
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D', NULL, 1), // 2012
);
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4), // 0 to 70
);
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B:$B', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C:$C', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D:$D', NULL, 4),
);
当我 运行 这段代码时,我得到的 excel 文件如下所示:
注意第一个数据系列 (2010) 是如何正确绘制的,而其他两个则没有。我还注意到,如果你 select 2010 年的数据系列,它确实同时定义了 y 值和 x 值:
但是,当您单击任何其他数据集时,您可以看到仅定义了 y 值:
我觉得这是我的一个相对简单的疏忽,但遗憾的是,我一直找不到问题所在。我担心这种类型的东西可能需要在 PHPExcel.php 文件中进行破解,但我想 运行 在弄乱源文件之前先由社区进行此操作。
非常感谢您的任何建议...
想通了!
事实证明这确实很简单,但是 PHPExcel 确实需要更新他们的示例文件。
我改变了这个:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4), // 0 to 70
);
为此:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4)
);
换句话说,包含x轴系列对象的数组需要与包含y轴系列对象的数组长度相同。令人困惑的是 x 轴数组填充了多个相同的 x 轴对象。
一个简单的问题,但却是一个令人沮丧的问题。
干杯!
PHPExcel 提供了一个非常简单和有用的 example 来说明如何创建包含基于少量数据的简单散点图的 Excel 文件。但是,问题在于此示例对其 x 轴使用规则间隔的 "string" 值 (Q1 - Q4)。
我想做的是用不规则间隔的数字 x 轴值创建一个散点图,所以我修改了这样的代码:
$objWorksheet->fromArray(
array(
array('', 2010, 2011, 2012),
array('0', 12, 15, 21),
array('10', 56, 73, 86),
array('30', 52, 61, 69),
array('70', 30, 32, 0),
)
);
$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B', NULL, 1), // 2010
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C', NULL, 1), // 2011
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D', NULL, 1), // 2012
);
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4), // 0 to 70
);
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B:$B', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C:$C', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D:$D', NULL, 4),
);
当我 运行 这段代码时,我得到的 excel 文件如下所示:
注意第一个数据系列 (2010) 是如何正确绘制的,而其他两个则没有。我还注意到,如果你 select 2010 年的数据系列,它确实同时定义了 y 值和 x 值:
但是,当您单击任何其他数据集时,您可以看到仅定义了 y 值:
我觉得这是我的一个相对简单的疏忽,但遗憾的是,我一直找不到问题所在。我担心这种类型的东西可能需要在 PHPExcel.php 文件中进行破解,但我想 运行 在弄乱源文件之前先由社区进行此操作。
非常感谢您的任何建议...
想通了!
事实证明这确实很简单,但是 PHPExcel 确实需要更新他们的示例文件。
我改变了这个:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4), // 0 to 70
);
为此:
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$A:$A', NULL, 4)
);
换句话说,包含x轴系列对象的数组需要与包含y轴系列对象的数组长度相同。令人困惑的是 x 轴数组填充了多个相同的 x 轴对象。
一个简单的问题,但却是一个令人沮丧的问题。
干杯!