PHPWord-改变图表的颜色
我正在与PHPWord合作,在那里我创建了一个包含一系列数据的图表(区域)。作为标准,这是一个蓝色的系列在图表上,但我需要它是橙色的 有人知道如何改变这个系列的颜色吗?我想我已经到处找了,没有结果PHPWord-改变图表的颜色,php,charts,phpword,Php,Charts,Phpword,我正在与PHPWord合作,在那里我创建了一个包含一系列数据的图表(区域)。作为标准,这是一个蓝色的系列在图表上,但我需要它是橙色的 有人知道如何改变这个系列的颜色吗?我想我已经到处找了,没有结果 $chart = $section->addChart($chartType, $categories, $series1); $chart->getStyle()->setWidth(Converter::inchToEmu(6.5))->setHeight(Converte
$chart = $section->addChart($chartType, $categories, $series1);
$chart->getStyle()->setWidth(Converter::inchToEmu(6.5))->setHeight(Converter::inchToEmu(2));
感谢您阅读本文,特别是如果您得到了答案:)phpWord图表似乎不支持自定义颜色定义
如果您可以&希望自己修改PhpWord代码,下面是一个如何为Word2007 writer执行此操作的示例:如果您修改文件
PhpWord\writer\Word2007\Part\Chart.php
,您可以更改图表的颜色
添加此代码:
if ($type == 'pie')
{
$elementColors = $this->element->getColors();
if($elementColors !== null)
{
$colorIndex = 0;
foreach ($elementColors as $color)
{
$xmlWriter->startElement('c:dPt');
$xmlWriter->writeElementBlock('c:idx', 'val', $colorIndex);
$xmlWriter->startElement('c:spPr');
$xmlWriter->startElement('a:solidFill');
$xmlWriter->writeElementBlock('a:srgbClr', 'val', $color);
$xmlWriter->endElement(); // a:solidFill
$xmlWriter->endElement(); // c:spPr
$xmlWriter->endElement(); // c:dPt
$colorIndex++;
}
}
}
else if($type == 'area')
{
$color = $seriesItem['color'];
if($color!=null)
{
$xmlWriter->startElement('c:spPr');
$xmlWriter->startElement('a:solidFill');
$xmlWriter->startElement('a:srgbClr');
$xmlWriter->writeAttribute('val',$color);
$xmlWriter->endElement();
$xmlWriter->endElement();
$xmlWriter->endElement();
}
}
else
{
$color = $seriesItem['color'];
if($color!=null)
{
$xmlWriter->startElement('c:spPr');
$xmlWriter->startElement('a:ln');
$xmlWriter->writeAttribute('w', 20000);
$xmlWriter->startElement('a:solidFill');
$xmlWriter->startElement('a:srgbClr');
$xmlWriter->writeAttribute('val',$color);
$xmlWriter->endElement();
$xmlWriter->endElement();
$xmlWriter->endElement();
$xmlWriter->endElement();
}
}
在此之后:
if ($scatter === true) {
$this->writeSeriesItem($xmlWriter, 'xVal', $categories);
$this->writeSeriesItem($xmlWriter, 'yVal', $values);
} else {
$this->writeSeriesItem($xmlWriter, 'cat', $categories,$name);
$this->writeSeriesItem($xmlWriter, 'val', $values);
你必须定义你的颜色。我在类PhpWord\Element\Chart.php
中定义了这个
我希望这对你有帮助 我在github问题中发布了这篇文章,但也在这里发布了,以防万一。在版本0.15.0中,您似乎可以使用
chart->getStyle()->setColors()
更改颜色:
没有人知道如何用面积图来做这件事?
$categories = array('A', 'B', 'C', 'D', 'E');
$series1 = array(1, 3, 2, 5, 4);
$chartType = 'pie';
$section->addTitle(ucfirst($chartType), 2);
$chart = $section->addChart($chartType, $categories, $series1);
$chart->getStyle()->setColors( array( 'FFFFFF', '000000', 'FF0000', '00FF00', '0000FF' ) );
$chart->getStyle()->setWidth(Converter::inchToEmu(2.5))->setHeight(Converter::inchToEmu(2));