Skip to content

Commit 0b23e2c

Browse files
committed
#169 : Data Labels Placement in Area Chart
1 parent 5ac1549 commit 0b23e2c

File tree

4 files changed

+57
-38
lines changed

4 files changed

+57
-38
lines changed

docs/shapes_chart.rst

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ Example:
99

1010
.. code-block:: php
1111
12-
$chartShape = $slide->createChartShape();
13-
12+
$chartShape = $slide->createChartShape();
13+
1414
Parts
1515
-----
1616

@@ -22,11 +22,11 @@ For hiding it, you define its visibility to false.
2222

2323
.. code-block:: php
2424
25-
$chartShape = $slide->createChartShape();
26-
$oLine = new Line();
27-
$oShape->getPlotArea()->setType($oLine);
28-
// Hide the title
29-
$oShape->getTitle()->setVisible(false);
25+
$chartShape = $slide->createChartShape();
26+
$oLine = new Line();
27+
$oShape->getPlotArea()->setType($oLine);
28+
// Hide the title
29+
$oShape->getTitle()->setVisible(false);
3030
3131
Series
3232
^^^^^^
@@ -62,6 +62,14 @@ You can custom the line of a serie, for Line & Scatter charts.
6262
$oSeries = new Series('Downloads', $seriesData);
6363
$oSeries->setOutline($oOutline);
6464
65+
You can define the position of the data label.
66+
Each position is described in `MSDN <https://msdn.microsoft.com/en-us/library/mt459417(v=office.12).aspx>`_
67+
68+
.. code-block:: php
69+
70+
$oSeries = new Series('Downloads', $seriesData);
71+
$oSeries->setLabelPosition(Series::LABEL_INSIDEEND);
72+
6573
Types
6674
-----
6775

@@ -80,15 +88,15 @@ You can stack multiples series in a same chart. After adding multiples series, y
8088

8189
.. code-block:: php
8290
83-
$oBarChart = new Bar();
84-
$oBarChart->addSeries($oSeries1);
85-
$oBarChart->addSeries($oSeries2);
86-
$oBarChart->addSeries($oSeries3);
87-
$oBarChart->setBarGrouping(Bar::GROUPING_CLUSTERED);
88-
// OR
89-
$oBarChart->setBarGrouping(Bar::GROUPING_STACKED);
90-
// OR
91-
$oBarChart->setBarGrouping(Bar::GROUPING_PERCENTSTACKED);
91+
$oBarChart = new Bar();
92+
$oBarChart->addSeries($oSeries1);
93+
$oBarChart->addSeries($oSeries2);
94+
$oBarChart->addSeries($oSeries3);
95+
$oBarChart->setBarGrouping(Bar::GROUPING_CLUSTERED);
96+
// OR
97+
$oBarChart->setBarGrouping(Bar::GROUPING_STACKED);
98+
// OR
99+
$oBarChart->setBarGrouping(Bar::GROUPING_PERCENTSTACKED);
92100
93101
- Bar::GROUPING_CLUSTERED
94102
.. image:: images/chart_columns_52x60.png

samples/Sample_05_Chart.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ function fnSlide_Area(PhpPresentation $objPHPPresentation) {
4545
$series->setShowSeriesName(true);
4646
$series->setShowValue(true);
4747
$series->getFill()->setStartColor(new Color('FF93A9CE'));
48+
$series->setLabelPosition(Series::LABEL_INSIDEEND);
4849
$areaChart->addSeries($series);
4950

5051
// Create a shape (chart)

src/PhpPresentation/Shape/Chart/Series.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
class Series implements ComparableInterface
2929
{
3030
/* Label positions */
31-
const LABEL_BESTFIT = 'bestFir';
31+
const LABEL_BESTFIT = 'bestFit';
3232
const LABEL_BOTTOM = 'b';
3333
const LABEL_CENTER = 'ctr';
3434
const LABEL_INSIDEBASE = 'inBase';
@@ -467,7 +467,7 @@ public function getMarker()
467467

468468
/**
469469
* @param Marker $marker
470-
* @return Line
470+
* @return \PhpOffice\PhpPresentation\Shape\Chart\Series
471471
*/
472472
public function setMarker(Marker $marker)
473473
{
@@ -485,7 +485,7 @@ public function getOutline()
485485

486486
/**
487487
* @param Outline $outline
488-
* @return Series
488+
* @return \PhpOffice\PhpPresentation\Shape\Chart\Series
489489
*/
490490
public function setOutline(Outline $outline)
491491
{
@@ -523,6 +523,7 @@ public function getHashIndex()
523523
* while doing a write of a workbook and when changes are not allowed.
524524
*
525525
* @param string $value Hash index
526+
* @return \PhpOffice\PhpPresentation\Shape\Chart\Series
526527
*/
527528
public function setHashIndex($value)
528529
{

src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -994,41 +994,41 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
994994
// c:ser
995995
$objWriter->startElement('c:ser');
996996

997-
// c:idx
997+
// c:ser > c:idx
998998
$objWriter->startElement('c:idx');
999999
$objWriter->writeAttribute('val', $seriesIndex);
10001000
$objWriter->endElement();
10011001

1002-
// c:order
1002+
// c:ser > c:order
10031003
$objWriter->startElement('c:order');
10041004
$objWriter->writeAttribute('val', $seriesIndex);
10051005
$objWriter->endElement();
10061006

1007-
// c:tx
1007+
// c:ser > c:tx
10081008
$objWriter->startElement('c:tx');
10091009
$coords = ($includeSheet ? 'Sheet1!$' . \PHPExcel_Cell::stringFromColumnIndex(1 + $seriesIndex) . '$1' : '');
10101010
$this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords);
10111011
$objWriter->endElement();
10121012

1013-
// c:dLbls
1013+
// c:ser > c:dLbls
10141014
$objWriter->startElement('c:dLbls');
10151015

1016-
// c:txPr
1016+
// c:ser > c:dLbls > c:txPr
10171017
$objWriter->startElement('c:txPr');
10181018

1019-
// a:bodyPr
1019+
// c:ser > c:dLbls > c:txPr > a:bodyPr
10201020
$objWriter->writeElement('a:bodyPr', null);
10211021

1022-
// a:lstStyle
1022+
// c:ser > c:dLbls > c:txPr > a:lstStyle
10231023
$objWriter->writeElement('a:lstStyle', null);
10241024

1025-
// a:p
1025+
// c:ser > c:dLbls > c:txPr > a:p
10261026
$objWriter->startElement('a:p');
10271027

1028-
// a:pPr
1028+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr
10291029
$objWriter->startElement('a:pPr');
10301030

1031-
// a:defRPr
1031+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr
10321032
$objWriter->startElement('a:defRPr');
10331033

10341034
$objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false'));
@@ -1045,50 +1045,59 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
10451045
}
10461046
}
10471047

1048-
// Font - a:solidFill
1048+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:solidFill
10491049
$objWriter->startElement('a:solidFill');
10501050

1051-
// a:srgbClr
1051+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:solidFill > a:srgbClr
10521052
$objWriter->startElement('a:srgbClr');
10531053
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
10541054
$objWriter->endElement();
10551055

1056+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > ## a:solidFill
10561057
$objWriter->endElement();
10571058

1058-
// Font - a:latin
1059+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:latin
10591060
$objWriter->startElement('a:latin');
10601061
$objWriter->writeAttribute('typeface', $series->getFont()->getName());
10611062
$objWriter->endElement();
10621063

1064+
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > ##a:defRPr
10631065
$objWriter->endElement();
10641066

1067+
// c:ser > c:dLbls > c:txPr > a:p > ##a:pPr
10651068
$objWriter->endElement();
10661069

1067-
// a:endParaRPr
1070+
// c:ser > c:dLbls > c:txPr > a:p > a:endParaRPr
10681071
$objWriter->startElement('a:endParaRPr');
10691072
$objWriter->writeAttribute('lang', 'en-US');
10701073
$objWriter->writeAttribute('dirty', '0');
10711074
$objWriter->endElement();
10721075

1076+
// c:ser > c:dLbls > c:txPr > ##a:p
10731077
$objWriter->endElement();
10741078

1079+
// c:ser > c:dLbls > ##c:txPr
10751080
$objWriter->endElement();
10761081

1077-
// c:showVal
1082+
// c:ser > c:dLbls > c:dLblPos
1083+
$this->writeElementWithValAttribute($objWriter, 'c:dLblPos', $series->getLabelPosition());
1084+
1085+
// c:ser > c:dLbls > c:showVal
10781086
$this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0');
10791087

1080-
// c:showCatName
1088+
// c:ser > c:dLbls > c:showCatName
10811089
$this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0');
10821090

1083-
// c:showSerName
1091+
// c:ser > c:dLbls > c:showSerName
10841092
$this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0');
10851093

1086-
// c:showPercent
1094+
// c:ser > c:dLbls > c:showPercent
10871095
$this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0');
10881096

1089-
// c:showLeaderLines
1097+
// c:ser > c:dLbls > c:showLeaderLines
10901098
$this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0');
10911099

1100+
// c:ser > ##c:dLbls
10921101
$objWriter->endElement();
10931102

10941103
if ($series->getFill()->getFillType() != Fill::FILL_NONE) {

0 commit comments

Comments
 (0)