2015-09-10 5 views
0

Я работаю с PHPWord, где я создал диаграмму (Area) с одной последовательностью данных. В качестве стандарта это синяя серия на графике, но мне нужно, чтобы она была оранжевой.PHPWord - Изменение цвета диаграммы

Кто-нибудь понял, как изменить цвет серии? Думаю, я искал везде безрезультатно.

$chart = $section->addChart($chartType, $categories, $series1); 
$chart->getStyle()->setWidth(Converter::inchToEmu(6.5))->setHeight(Converter::inchToEmu(2)); 

Спасибо за чтение этого, и особенно, если вы получили ответ :)

ответ

0

Диаграмма phpWord, кажется, не поддерживает пользовательские определения цвета.

Если вы & хотите изменить код PhpWord немного самостоятельно, вот пример того, как сделать это для для Word2007 писателя: Define custom pie chart colors

+0

Никто не понял, как это сделать с помощью диаграммы района? –

0

вы можете изменить цвет ваших графиков, если вы измените файл 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.

Надеюсь, это вам поможет.