.. _shapes_chart: Charts ====== To create a chart, use `createChartShape` method of Slide. Example: .. code-block:: php $chartShape = $slide->createChartShape(); Parts ----- Axis ^^^^ You can define gridlines (minor and major) for each axis (X & Y). For each gridline, you can custom the width (in points), the fill type and the fill color. .. code-block:: php use \PhpOffice\PhpPresentation\Shape\Chart\Gridlines; $oLine = new Line(); $oGridLines = new Gridlines(); $oGridLines->getOutline()->setWidth(10); $oGridLines->getOutline()->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_BLUE)); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisX()->setMajorGridlines($oGridLines); For Axis, you can define the min & max bounds with `setMinBounds` & `setMaxBounds` methods. For resetting them, you pass null as parameter to these methods. .. code-block:: php use \PhpOffice\PhpPresentation\Shape\Chart\Gridlines; $oLine = new Line(); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisX()->setMinBounds(0); $oShape->getPlotArea()->getAxisX()->setMaxBounds(200); You can define outline for each axis (X & Y). .. code-block:: php $oLine = new Line(); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisX()->getOutline()->setWidth(10); $oShape->getPlotArea()->getAxisX()->getOutline()->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_BLUE)); For Axis Y, you can define tick mark with `setMinorTickMark` & `setMajorTickMark` methods. For resetting them, you pass Axis::TICK_MARK_NONE as parameter to these methods. .. code-block:: php use \PhpOffice\PhpPresentation\Shape\Chart\Axis; $oLine = new Line(); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisY()->setMinorTickMark(Axis::TICK_MARK_NONE); $oShape->getPlotArea()->getAxisY()->setMajorTickMark(Axis::TICK_MARK_INSIDE); For Axis Y, you can define unit with `setMinorUnit` & `setMajorUnit` methods. For resetting them, you pass null as parameter to these methods. .. code-block:: php use \PhpOffice\PhpPresentation\Shape\Chart\Axis; $oLine = new Line(); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisY()->setMinorUnit(null); $oShape->getPlotArea()->getAxisY()->setMajorUnit(0.05); You can define visibility for each axis (X & Y). .. code-block:: php $oLine = new Line(); $oShape = $oSlide->createChartShape(); $oShape->getPlotArea()->setType($oLine); $oShape->getPlotArea()->getAxisX()->setIsVisible(false); Title ^^^^^ By default, the title of a chart is displayed. For hiding it, you define its visibility to false. .. code-block:: php $oLine = new Line(); $oShape = $slide->createChartShape(); $oShape->getPlotArea()->setType($oLine); // Hide the title $oShape->getTitle()->setVisible(false); Series ^^^^^^ You can custom the font of a serie. .. code-block:: php $oSeries = new Series('Downloads', $seriesData); // Define the size $oSeries->getFont()->setSize(25); You can custom the marker of a serie, for Line & Scatter charts. .. code-block:: php use \PhpOffice\PhpPresentation\Shape\Chart\Marker; $oSeries = new Series('Downloads', $seriesData); $oMarker = $oSeries->getMarker(); $oMarker->setSymbol(Marker::SYMBOL_DASH)->setSize(10); You can custom the line of a serie, for Line & Scatter charts. .. code-block:: php use \PhpOffice\PhpPresentation\Style\Outline; $oOutline = new Outline(); // Define the color $oOutline->getFill()->setFillType(Fill::FILL_SOLID); $oOutline->getFill()->setStartColor(new Color(Color::COLOR_YELLOW)); // Define the width (in points) $oOutline->setWidth(2); $oSeries = new Series('Downloads', $seriesData); $oSeries->setOutline($oOutline); You can define the position of the data label. Each position is described in `MSDN `_ .. code-block:: php $oSeries = new Series('Downloads', $seriesData); $oSeries->setLabelPosition(Series::LABEL_INSIDEEND); You can define if some informations are displayed. .. code-block:: php $oSeries = new Series('Downloads', $seriesData); $oSeries->setSeparator(';'); $oSeries->setShowCategoryName(true); $oSeries->setShowLeaderLines(true); $oSeries->setShowLegendKey(true); $oSeries->setShowPercentage(true); $oSeries->setShowSeriesName(true); $oSeries->setShowValue(true); View3D ^^^^^^ For enabling the autoscale for a shape, you must reset the height percent. .. code-block:: php $oShape->getView3D()->setHeightPercent(null); Types ----- Area ^^^^ TODO Bar & Bar3D ^^^^^^^^^^^ Gap Width """"""""" You can define the gap width between bar or columns clusters. It is defined in percent. The default value is 150%. The value must be defined between 0 and 500. .. code-block:: php $oBarChart = new Bar(); $oBarChart->setGapWidthPercent(250); Stacking """""""" You can stack multiples series in a same chart. After adding multiples series, you can define the bar grouping with `setBarGrouping` method of AbstractTypeBar. .. code-block:: php $oBarChart = new Bar(); $oBarChart->addSeries($oSeries1); $oBarChart->addSeries($oSeries2); $oBarChart->addSeries($oSeries3); $oBarChart->setBarGrouping(Bar::GROUPING_CLUSTERED); // OR $oBarChart->setBarGrouping(Bar::GROUPING_STACKED); // OR $oBarChart->setBarGrouping(Bar::GROUPING_PERCENTSTACKED); - Bar::GROUPING_CLUSTERED .. image:: images/chart_columns_52x60.png :width: 120px :alt: Bar::GROUPING_CLUSTERED - Bar::GROUPING_STACKED .. image:: images/chart_columnstack_52x60.png :width: 120px :alt: Bar::GROUPING_STACKED - Bar::GROUPING_PERCENTSTACKED .. image:: images/chart_columnpercent_52x60.png :width: 120px :alt: Bar::GROUPING_PERCENTSTACKED Line ^^^^ TODO Pie & Pie3D ^^^^^^^^^^^ TODO Scatter ^^^^^^^ TODO