gpt4 book ai didi

php - 如何更改使用 phpexcel 生成的折线图的样式?

转载 作者:IT王子 更新时间:2023-10-29 00:05:44 27 4
gpt4 key购买 nike

我正在使用 Github library 中的示例生成折线图.

我想要的是为图表中的每条线设置一些自定义样式的选项,就像我们在 Excel 工作表中手动做的那样:

选择图表中的线,设置数据系列格式,然后:

  • 标记选项 > 无
  • 线条样式 > 宽度 > 2.5pt(默认为 1pt)
  • 线型 > 平滑线

如何为折线图中生成的线设置以上三个选项?到目前为止,这是我为图表设置布局和数据系列的代码:

$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));

有人可以提供提示吗,因为我在示例中找不到。

最佳答案

对于获得 Marker Options > None 的第一个问题:

在文件 PHPExcel/Chart/Renderer/jpgraph.php 的第 287 行:

$marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();

改成

$marker = 'none';

要去除标记,请注意这是一个有点hacky 的修复,通常它会遍历所有标记并且工具中没有用于自行设置标记的功能。 (这就是为什么你在示例中找不到它的原因)

您还可以删除或编辑 Excel2007/Chart.php 中的代码 line 792 , 这里可以看到if ($plotSeriesMarker) 代码,把它改成"none" 或者直接删掉这部分。


对于你的第二个问题:Line Style > Width > 2.5pt (1pt is default)

在文件PHPExcel/Writer/Excel2007/Chart.php
line 781在函数 _writePlotGroup 中可以看到画线代码

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 272

$objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine() );

将此更改为

$objWriter->writeAttribute('val', 1 );

它肯定会起作用。

关于php - 如何更改使用 phpexcel 生成的折线图的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763977/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com