Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Chart.php
private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMultiLevelSeries, &$valIsMultiLevelSeries, &$plotGroupingType)
    {
        if ($plotGroup === null) {
            return;
        }

        if (($groupType == DataSeries::TYPE_BARCHART) || ($groupType == DataSeries::TYPE_BARCHART_3D)) {
            $objWriter->startElement('c:barDir');
            $objWriter->writeAttribute('val', $plotGroup->getPlotDirection());
            $objWriter->endElement();
        }

        if ($plotGroup->getPlotGrouping() !== null) {
            $plotGroupingType = $plotGroup->getPlotGrouping();
            $objWriter->startElement('c:grouping');
            $objWriter->writeAttribute('val', $plotGroupingType);
            $objWriter->endElement();
        }

        //    Get these details before the loop, because we can use the count to check for varyColors
        $plotSeriesOrder = $plotGroup->getPlotOrder();
        $plotSeriesCount = count($plotSeriesOrder);

        if (($groupType !== DataSeries::TYPE_RADARCHART) && ($groupType !== DataSeries::TYPE_STOCKCHART)) {
            if ($groupType !== DataSeries::TYPE_LINECHART) {
                if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART) || ($plotSeriesCount > 1)) {
                    $objWriter->startElement('c:varyColors');
                    $objWriter->writeAttribute('val', 1);
                    $objWriter->endElement();
                } else {
                    $objWriter->startElement('c:varyColors');
                    $objWriter->writeAttribute('val', 0);
                    $objWriter->endElement();
                }
            }
        }

        foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
            $objWriter->startElement('c:ser');

            $plotLabel = $plotGroup->getPlotLabelByIndex($plotSeriesIdx);
            if ($plotLabel) {
                $fillColor = $plotLabel->getFillColor();
                if ($fillColor !== null) {
                    $objWriter->startElement('c:spPr');
                    $objWriter->startElement('a:solidFill');
                    $objWriter->startElement('a:srgbClr');
                    $objWriter->writeAttribute('val', $fillColor);
                    $objWriter->endElement();
                    $objWriter->endElement();
                    $objWriter->endElement();
                }
            }

            $objWriter->startElement('c:idx');
            $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesIdx);
            $objWriter->endElement();

            $objWriter->startElement('c:order');
            $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesRef);
            $objWriter->endElement();

            if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) {
                $objWriter->startElement('c:dPt');
                $objWriter->startElement('c:idx');
                $objWriter->writeAttribute('val', 3);
                $objWriter->endElement();

                $objWriter->startElement('c:bubble3D');
                $objWriter->writeAttribute('val', 0);
                $objWriter->endElement();

                $objWriter->startElement('c:spPr');
                $objWriter->startElement('a:solidFill');
                $objWriter->startElement('a:srgbClr');
                $objWriter->writeAttribute('val', 'FF9900');
                $objWriter->endElement();
                $objWriter->endElement();
                $objWriter->endElement();
                $objWriter->endElement();
            }

            //    Labels
            $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef);
            if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) {
                $objWriter->startElement('c:tx');
                $objWriter->startElement('c:strRef');
                $this->writePlotSeriesLabel($plotSeriesLabel, $objWriter);
                $objWriter->endElement();
                $objWriter->endElement();
            }

            //    Values
            $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef);

            //    Formatting for the points
            if (($groupType == DataSeries::TYPE_LINECHART) || ($groupType == DataSeries::TYPE_STOCKCHART)) {
                $plotLineWidth = 12700;
                if ($plotSeriesValues) {
                    $plotLineWidth = $plotSeriesValues->getLineWidth();
                }

                $objWriter->startElement('c:spPr');
                $objWriter->startElement('a:ln');
                $objWriter->writeAttribute('w', $plotLineWidth);
                if ($groupType == DataSeries::TYPE_STOCKCHART) {
                    $objWriter->startElement('a:noFill');
                    $objWriter->endElement();
                }
                $objWriter->endElement();
                $objWriter->endElement();
            }

            if ($plotSeriesValues) {
                $plotSeriesMarker = $plotSeriesValues->getPointMarker();
                if ($plotSeriesMarker) {
                    $objWriter->startElement('c:marker');
                    $objWriter->startElement('c:symbol');
                    $objWriter->writeAttribute('val', $plotSeriesMarker);
                    $objWriter->endElement();

                    if ($plotSeriesMarker !== 'none') {
                        $objWriter->startElement('c:size');
                        $objWriter->writeAttribute('val', 3);
                        $objWriter->endElement();
                    }

                    $objWriter->endElement();
                }
            }

            if (($groupType === DataSeries::TYPE_BARCHART) || ($groupType === DataSeries::TYPE_BARCHART_3D) || ($groupType === DataSeries::TYPE_BUBBLECHART)) {
                $objWriter->startElement('c:invertIfNegative');
                $objWriter->writeAttribute('val', 0);
                $objWriter->endElement();
            }

            //    Category Labels
            $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef);
            if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) {
                $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries();

                if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) {
                    if ($plotGroup->getPlotStyle() !== null) {
                        $plotStyle = $plotGroup->getPlotStyle();
                        if ($plotStyle) {
                            $objWriter->startElement('c:explosion');
                            $objWriter->writeAttribute('val', 25);
                            $objWriter->endElement();
                        }
                    }
                }

                if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) {
                    $objWriter->startElement('c:xVal');
                } else {
                    $objWriter->startElement('c:cat');
                }

                $this->writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str');
                $objWriter->endElement();
            }

            //    Values
            if ($plotSeriesValues) {
                $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries();

                if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) {
                    $objWriter->startElement('c:yVal');
                } else {
                    $objWriter->startElement('c:val');
                }

                $this->writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num');
                $objWriter->endElement();
            }

            if ($groupType === DataSeries::TYPE_BUBBLECHART) {
                $this->writeBubbles($plotSeriesValues, $objWriter);
            }

            $objWriter->endElement();
        }

        $this->seriesIndex += $plotSeriesIdx + 1;
    }
private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMultiLevelSeries, &$valIsMultiLevelSeries, &$plotGroupingType)
    {
        if ($plotGroup === null) {
            return;
        }

        if (($groupType == DataSeries::TYPE_BARCHART) || ($groupType == DataSeries::TYPE_BARCHART_3D)) {
            $objWriter->startElement('c:barDir');
            $objWriter->writeAttribute('val', $plotGroup->getPlotDirection());
            $objWriter->endElement();
        }

        if ($plotGroup->getPlotGrouping() !== null) {
            $plotGroupingType = $plotGroup->getPlotGrouping();
            $objWriter->startElement('c:grouping');
            $objWriter->writeAttribute('val', $plotGroupingType);
            $objWriter->endElement();
        }

        //    Get these details before the loop, because we can use the count to check for varyColors
        $plotSeriesOrder = $plotGroup->getPlotOrder();
        $plotSeriesCount = count($plotSeriesOrder);

        if (($groupType !== DataSeries::TYPE_RADARCHART) && ($groupType !== DataSeries::TYPE_STOCKCHART)) {
            if ($groupType !== DataSeries::TYPE_LINECHART) {
                if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART) || ($plotSeriesCount > 1)) {
                    $objWriter->startElement('c:varyColors');
                    $objWriter->writeAttribute('val', 1);
                    $objWriter->endElement();
                } else {
                    $objWriter->startElement('c:varyColors');
                    $objWriter->writeAttribute('val', 0);
                    $objWriter->endElement();
                }
            }
        }

        foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) {
            $objWriter->startElement('c:ser');

            $plotLabel = $plotGroup->getPlotLabelByIndex($plotSeriesIdx);
            if ($plotLabel) {
                $fillColor = $plotLabel->getFillColor();
                if ($fillColor !== null) {
                    $objWriter->startElement('c:spPr');
                    $objWriter->startElement('a:solidFill');
                    $objWriter->startElement('a:srgbClr');
                    $objWriter->writeAttribute('val', $fillColor);
                    $objWriter->endElement();
                    $objWriter->endElement();
                    $objWriter->endElement();
                }
            }

            $objWriter->startElement('c:idx');
            $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesIdx);
            $objWriter->endElement();

            $objWriter->startElement('c:order');
            $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesRef);
            $objWriter->endElement();

            if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) {
                $objWriter->startElement('c:dPt');
                $objWriter->startElement('c:idx');
                $objWriter->writeAttribute('val', 3);
                $objWriter->endElement();

                $objWriter->startElement('c:bubble3D');
                $objWriter->writeAttribute('val', 0);
                $objWriter->endElement();

                $objWriter->startElement('c:spPr');
                $objWriter->startElement('a:solidFill');
                $objWriter->startElement('a:srgbClr');
                $objWriter->writeAttribute('val', 'FF9900');
                $objWriter->endElement();
                $objWriter->endElement();
                $objWriter->endElement();
                $objWriter->endElement();
            }

            //    Labels
            $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef);
            if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) {
                $objWriter->startElement('c:tx');
                $objWriter->startElement('c:strRef');
                $this->writePlotSeriesLabel($plotSeriesLabel, $objWriter);
                $objWriter->endElement();
                $objWriter->endElement();
            }

            //    Values
            $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef);

            //    Formatting for the points
            if (($groupType == DataSeries::TYPE_LINECHART) || ($groupType == DataSeries::TYPE_STOCKCHART)) {
                $plotLineWidth = 12700;
                if ($plotSeriesValues) {
                    $plotLineWidth = $plotSeriesValues->getLineWidth();
                }

                $objWriter->startElement('c:spPr');
                $objWriter->startElement('a:ln');
                $objWriter->writeAttribute('w', $plotLineWidth);
                if ($groupType == DataSeries::TYPE_STOCKCHART) {
                    $objWriter->startElement('a:noFill');
                    $objWriter->endElement();
                }
                $objWriter->endElement();
                $objWriter->endElement();
            }

            if ($plotSeriesValues) {
                $plotSeriesMarker = $plotSeriesValues->getPointMarker();
                if ($plotSeriesMarker) {
                    $objWriter->startElement('c:marker');
                    $objWriter->startElement('c:symbol');
                    $objWriter->writeAttribute('val', $plotSeriesMarker);
                    $objWriter->endElement();

                    if ($plotSeriesMarker !== 'none') {
                        $objWriter->startElement('c:size');
                        $objWriter->writeAttribute('val', 3);
                        $objWriter->endElement();
                    }

                    $objWriter->endElement();
                }
            }

            if (($groupType === DataSeries::TYPE_BARCHART) || ($groupType === DataSeries::TYPE_BARCHART_3D) || ($groupType === DataSeries::TYPE_BUBBLECHART)) {
                $objWriter->startElement('c:invertIfNegative');
                $objWriter->writeAttribute('val', 0);
                $objWriter->endElement();
            }

            //    Category Labels
            $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef);
            if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) {
                $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries();

                if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) {
                    if ($plotGroup->getPlotStyle() !== null) {
                        $plotStyle = $plotGroup->getPlotStyle();
                        if ($plotStyle) {
                            $objWriter->startElement('c:explosion');
                            $objWriter->writeAttribute('val', 25);
                            $objWriter->endElement();
                        }
                    }
                }

                if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) {
                    $objWriter->startElement('c:xVal');
                } else {
                    $objWriter->startElement('c:cat');
                }

                $this->writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str');
                $objWriter->endElement();
            }

            //    Values
            if ($plotSeriesValues) {
                $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries();

                if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) {
                    $objWriter->startElement('c:yVal');
                } else {
                    $objWriter->startElement('c:val');
                }

                $this->writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num');
                $objWriter->endElement();
            }

            if ($groupType === DataSeries::TYPE_BUBBLECHART) {
                $this->writeBubbles($plotSeriesValues, $objWriter);
            }

            $objWriter->endElement();
        }

        $this->seriesIndex += $plotSeriesIdx + 1;
    }
private function writePlotGroup ( $ plotGroup , $ groupType , $ objWriter , & $ catIsMultiLevelSeries , & $ valIsMultiLevelSeries , & $ plotGroupingType ) { if ( $ plotGroup === null ) { return ; } if ( ( $ groupType == DataSeries :: TYPE_BARCHART ) || ( $ groupType == DataSeries :: TYPE_BARCHART_3D ) ) { $ objWriter -> startElement ( 'c:barDir' ) ; $ objWriter -> writeAttribute ( 'val' , $ plotGroup -> getPlotDirection ( ) ) ; $ objWriter -> endElement ( ) ; } if ( $ plotGroup -> getPlotGrouping ( ) !== null ) { $ plotGroupingType = $ plotGroup -> getPlotGrouping ( ) ; $ objWriter -> startElement ( 'c:grouping' ) ; $ objWriter -> writeAttribute ( 'val' , $ plotGroupingType ) ; $ objWriter -> endElement ( ) ; } //    Get these details before the loop, because we can use the count to check for varyColors $ plotSeriesOrder = $ plotGroup -> getPlotOrder ( ) ; $ plotSeriesCount = count ( $ plotSeriesOrder ) ; if ( ( $ groupType !== DataSeries :: TYPE_RADARCHART ) && ( $ groupType !== DataSeries :: TYPE_STOCKCHART ) ) { if ( $ groupType !== DataSeries :: TYPE_LINECHART ) { if ( ( $ groupType == DataSeries :: TYPE_PIECHART ) || ( $ groupType == DataSeries :: TYPE_PIECHART_3D ) || ( $ groupType == DataSeries :: TYPE_DONUTCHART ) || ( $ plotSeriesCount > 1 ) ) { $ objWriter -> startElement ( 'c:varyColors' ) ; $ objWriter -> writeAttribute ( 'val' , 1 ) ; $ objWriter -> endElement ( ) ; } else { $ objWriter -> startElement ( 'c:varyColors' ) ; $ objWriter -> writeAttribute ( 'val' , 0 ) ; $ objWriter -> endElement ( ) ; } } } foreach ( $ plotSeriesOrder as $ plotSeriesIdx => $ plotSeriesRef ) { $ objWriter -> startElement ( 'c:ser' ) ; $ plotLabel = $ plotGroup -> getPlotLabelByIndex ( $ plotSeriesIdx ) ; if ( $ plotLabel ) { $ fillColor = $ plotLabel -> getFillColor ( ) ; if ( $ fillColor !== null ) { $ objWriter -> startElement ( 'c:spPr' ) ; $ objWriter -> startElement ( 'a:solidFill' ) ; $ objWriter -> startElement ( 'a:srgbClr' ) ; $ objWriter -> writeAttribute ( 'val' , $ fillColor ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; } } $ objWriter -> startElement ( 'c:idx' ) ; $ objWriter -> writeAttribute ( 'val' , $ this -> seriesIndex + $ plotSeriesIdx ) ; $ objWriter -> endElement ( ) ; $ objWriter -> startElement ( 'c:order' ) ; $ objWriter -> writeAttribute ( 'val' , $ this -> seriesIndex + $ plotSeriesRef ) ; $ objWriter -> endElement ( ) ; if ( ( $ groupType == DataSeries :: TYPE_PIECHART ) || ( $ groupType == DataSeries :: TYPE_PIECHART_3D ) || ( $ groupType == DataSeries :: TYPE_DONUTCHART ) ) { $ objWriter -> startElement ( 'c:dPt' ) ; $ objWriter -> startElement ( 'c:idx' ) ; $ objWriter -> writeAttribute ( 'val' , 3 ) ; $ objWriter -> endElement ( ) ; $ objWriter -> startElement ( 'c:bubble3D' ) ; $ objWriter -> writeAttribute ( 'val' , 0 ) ; $ objWriter -> endElement ( ) ; $ objWriter -> startElement ( 'c:spPr' ) ; $ objWriter -> startElement ( 'a:solidFill' ) ; $ objWriter -> startElement ( 'a:srgbClr' ) ; $ objWriter -> writeAttribute ( 'val' , 'FF9900' ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; } //    Labels $ plotSeriesLabel = $ plotGroup -> getPlotLabelByIndex ( $ plotSeriesRef ) ; if ( $ plotSeriesLabel && ( $ plotSeriesLabel -> getPointCount ( ) > 0 ) ) { $ objWriter -> startElement ( 'c:tx' ) ; $ objWriter -> startElement ( 'c:strRef' ) ; $ this -> writePlotSeriesLabel ( $ plotSeriesLabel , $ objWriter ) ; $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; } //    Values $ plotSeriesValues = $ plotGroup -> getPlotValuesByIndex ( $ plotSeriesRef ) ; //    Formatting for the points if ( ( $ groupType == DataSeries :: TYPE_LINECHART ) || ( $ groupType == DataSeries :: TYPE_STOCKCHART ) ) { $ plotLineWidth = 12700 ; if ( $ plotSeriesValues ) { $ plotLineWidth = $ plotSeriesValues -> getLineWidth ( ) ; } $ objWriter -> startElement ( 'c:spPr' ) ; $ objWriter -> startElement ( 'a:ln' ) ; $ objWriter -> writeAttribute ( 'w' , $ plotLineWidth ) ; if ( $ groupType == DataSeries :: TYPE_STOCKCHART ) { $ objWriter -> startElement ( 'a:noFill' ) ; $ objWriter -> endElement ( ) ; } $ objWriter -> endElement ( ) ; $ objWriter -> endElement ( ) ; } if ( $ plotSeriesValues ) { $ plotSeriesMarker = $ plotSeriesValues -> getPointMarker ( ) ; if ( $ plotSeriesMarker ) { $ objWriter -> startElement ( 'c:marker' ) ; $ objWriter -> startElement ( 'c:symbol' ) ; $ objWriter -> writeAttribute ( 'val' , $ plotSeriesMarker ) ; $ objWriter -> endElement ( ) ; if ( $ plotSeriesMarker !== 'none' ) { $ objWriter -> startElement ( 'c:size' ) ; $ objWriter -> writeAttribute ( 'val' , 3 ) ; $ objWriter -> endElement ( ) ; } $ objWriter -> endElement ( ) ; } } if ( ( $ groupType === DataSeries :: TYPE_BARCHART ) || ( $ groupType === DataSeries :: TYPE_BARCHART_3D ) || ( $ groupType === DataSeries :: TYPE_BUBBLECHART ) ) { $ objWriter -> startElement ( 'c:invertIfNegative' ) ; $ objWriter -> writeAttribute ( 'val' , 0 ) ; $ objWriter -> endElement ( ) ; } //    Category Labels $ plotSeriesCategory = $ plotGroup -> getPlotCategoryByIndex ( $ plotSeriesRef ) ; if ( $ plotSeriesCategory && ( $ plotSeriesCategory -> getPointCount ( ) > 0 ) ) { $ catIsMultiLevelSeries = $ catIsMultiLevelSeries || $ plotSeriesCategory -> isMultiLevelSeries ( ) ; if ( ( $ groupType == DataSeries :: TYPE_PIECHART ) || ( $ groupType == DataSeries :: TYPE_PIECHART_3D ) || ( $ groupType == DataSeries :: TYPE_DONUTCHART ) ) { if ( $ plotGroup -> getPlotStyle ( ) !== null ) { $ plotStyle = $ plotGroup -> getPlotStyle ( ) ; if ( $ plotStyle ) { $ objWriter -> startElement ( 'c:explosion' ) ; $ objWriter -> writeAttribute ( 'val' , 25 ) ; $ objWriter -> endElement ( ) ; } } } if ( ( $ groupType === DataSeries :: TYPE_BUBBLECHART ) || ( $ groupType === DataSeries :: TYPE_SCATTERCHART ) ) { $ objWriter -> startElement ( 'c:xVal' ) ; } else { $ objWriter -> startElement ( 'c:cat' ) ; } $ this -> writePlotSeriesValues ( $ plotSeriesCategory , $ objWriter , $ groupType , 'str' ) ; $ objWriter -> endElement ( ) ; } //    Values if ( $ plotSeriesValues ) { $ valIsMultiLevelSeries = $ valIsMultiLevelSeries || $ plotSeriesValues -> isMultiLevelSeries ( ) ; if ( ( $ groupType === DataSeries :: TYPE_BUBBLECHART ) || ( $ groupType === DataSeries :: TYPE_SCATTERCHART ) ) { $ objWriter -> startElement ( 'c:yVal' ) ; } else { $ objWriter -> startElement ( 'c:val' ) ; } $ this -> writePlotSeriesValues ( $ plotSeriesValues , $ objWriter , $ groupType , 'num' ) ; $ objWriter -> endElement ( ) ; } if ( $ groupType === DataSeries :: TYPE_BUBBLECHART ) { $ this -> writeBubbles ( $ plotSeriesValues , $ objWriter ) ; } $ objWriter -> endElement ( ) ; } $ this -> seriesIndex += $ plotSeriesIdx + 1 ; }
Write Plot Group (series of related plots).

@param DataSeries $plotGroup
@param string $groupType Type of plot for dataseries
@param XMLWriter $objWriter XML Writer
@param bool &$catIsMultiLevelSeries Is category a multi-series category
@param bool &$valIsMultiLevelSeries Is value set a multi-series set
@param string &$plotGroupingType Type of grouping for multi-series values

@throws WriterException
Write Plot Group ( series of related plots ) .