PHPWord-改变图表的颜色

PHPWord-改变图表的颜色,php,charts,phpword,Php,Charts,Phpword,我正在与PHPWord合作,在那里我创建了一个包含一系列数据的图表(区域)。作为标准,这是一个蓝色的系列在图表上,但我需要它是橙色的 有人知道如何改变这个系列的颜色吗?我想我已经到处找了,没有结果 $chart = $section->addChart($chartType, $categories, $series1); $chart->getStyle()->setWidth(Converter::inchToEmu(6.5))->setHeight(Converte

我正在与PHPWord合作,在那里我创建了一个包含一系列数据的图表(区域)。作为标准,这是一个蓝色的系列在图表上,但我需要它是橙色的

有人知道如何改变这个系列的颜色吗?我想我已经到处找了,没有结果

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