Forum


Replies: 1   Views: 1010
Non-smooth linechart
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by Samuel  · 23-02-2017 - 08:47

Hi,

By default, lineCharts are drawn with smooth lines, is there any way to change it?

This code:

$docx->addChart(array(
    'data'      => $chart_data,
    'type'      => 'lineChart',
    'sizeX'     => 16,
    'sizeY'     => 8,
    'legendPos' => 'b'
));

Generates something like this: http://imgur.com/a/NQP8v

What I need: http://imgur.com/a/cbyX5

Thanks

Posted by admin  · 23-02-2017 - 11:42

Hello,

The smooth option is only available for scatter charts, you can read about this option on:

http://www.phpdocx.com/api-documentation/word-content/add-chart-Word-document-with-PHP

Anyway, you can add support for line charts easily:

1. Edit the file CreateLineChart.inc and around line 169 add these lines:

            if (!empty($this->_smooth) && $this->_smooth && $this->_symbol != 'dot') {
                $this->generateSMOOTH();
            }

Instead of this code:

            foreach ($this->values as $legend => $value) {
                if ($legend == 'legend') {
                    continue;
                }
                $this->generatePT($num);
                $this->generateV($value[$i]);
                $num++;
            }

            $this->cleanTemplate3();

 

The class must use this code:

            foreach ($this->values as $legend => $value) {
                if ($legend == 'legend') {
                    continue;
                }
                $this->generatePT($num);
                $this->generateV($value[$i]);
                $num++;
            }

            if (!empty($this->_smooth) && $this->_smooth && $this->_symbol != 'dot') {
                $this->generateSMOOTH();
            }
            $this->cleanTemplate3();

2. Use the new option (smooth option) when adding the chart:

$paramsChart = array(
    'data' => $data,
    'type' => 'lineChart',
    'color' => '5',
    'chartAlign' => 'center',
    'showTable' => 0,
    'sizeX' => '12',
    'sizeY' => '10',
    'legendPos' => 'b',
    'legendOverlay' => '0',
    'haxLabel' => 'X Axis',
    'vaxLabel' => 'Y Axis',
    'haxLabelDisplay' => 'horizontal',
    'vaxLabelDisplay' => 'vertical',
    'hgrid' => '3',
    'vgrid' => '1',
    'smooth' => true,
);
$docx->addChart($paramsChart);

Regards.