我正在使用Github library中的示例生成折线图。
我想要的是为图表中的每一行设置几个自定义样式的选项,就像我们在excel表中手动执行一样:
在图表中选择Line,格式化数据系列,然后:
如何为折线图中生成的线设置以上三个选项? 到目前为止,这是我的代码,用于设置图表的布局和数据系列:
$series = new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_LINECHART,
PHPExcel_Chart_DataSeries::GROUPING_STANDARD,
range(0, count($dataSeriesValues)-1),
$dataseriesLabels,
$xAxisTickValues,
$dataSeriesValues
);
$layout1 = new PHPExcel_Chart_Layout();
$layout1->setShowVal(TRUE);
$plotarea = new PHPExcel_Chart_PlotArea($layout1, array($series));
有人可以提供提示,因为我在示例中找不到它。
答案 0 :(得分:8)
在第287行的文件PHPExcel/Chart/Renderer/jpgraph.php
中:
$marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
将其更改为
$marker = 'none';
要删除标记,请注意这是一个 hacky 修复,通常它会循环所有标记,并且工具中没有自行设置标记的功能。 (这就是为什么你在例子中找不到它)
您还可以在Excel2007/Chart.php
line 792删除或修改代码,在这里您可以看到if ($plotSeriesMarker)
代码,将其更改为"none"
或只删除此部分。< / p>
在文件PHPExcel/Writer/Excel2007/Chart.php
中
在函数_writePlotGroup
的{{3}}处,您可以看到行绘图代码
if ($groupType == PHPExcel_Chart_DataSeries::TYPE_LINECHART) {
$objWriter->startElement('c:spPr');
$objWriter->startElement('a:ln');
$objWriter->writeAttribute('w', 12700);
$objWriter->endElement();
$objWriter->endElement();
}
您可以在此处使用例如:
更改宽度$objWriter->writeAttribute('w', '40000');
PHPExcel_Chart_DataSeries
的构造函数是
/**
* Create a new PHPExcel_Chart_DataSeries
*/
public function __construct($plotType = null, $plotGrouping = null, $plotOrder = array(), $plotLabel = array(), $plotCategory = array(), $plotValues = array(), $smoothLine = null, $plotStyle = null)
因此,在$dataSeriesValues
之后,您可以定义smoothline
和plotStyle
值。
将true
传递给smoothline
参数可为您提供流畅的线条样式。
如果由于某种原因无效,可以在Chart.php
上找到line 781
$objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine() );
将此更改为
$objWriter->writeAttribute('val', 1 );
它应该可以肯定。
答案 1 :(得分:2)
在此回复时解决您的第一个问题;标记选项&gt;无很简单,不涉及修改基本代码。创建$dataSeriesValues
个对象(第86行)时,您可以定义所需的标记类型或“无”。
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', null, 4, array(), 'none'),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', null, 4, array(), 'none'),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', null, 4, array(), 'none'),
);