首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPPowerpoint :网格线+自定义图表线颜色+标签Y轴

PHPPowerpoint :网格线+自定义图表线颜色+标签Y轴
EN

Stack Overflow用户
提问于 2013-05-25 11:25:27
回答 1查看 1.4K关注 0票数 4

我正在使用下面的代码来使用PHP Powerpoint库创建一个图表。

代码语言:javascript
复制
$currentSlide = createTemplatedSlide($objPHPPowerPoint);
$seriesData = array('ABC'=>97,'BCD'=>97,'CDE'=>97,'DEF'=>97,'EFG'=>97,'FGH'=>97);
$lineChart = new PHPPowerPoint_Shape_Chart_Type_Line();
$series = new PHPPowerPoint_Shape_Chart_Series('Benchmark', $seriesData);
$series->setShowSeriesName(false);
$lineChart->addSeries($series);

$shape = $currentSlide->createChartShape();
$shape->setName('Benchmark')
      ->setResizeProportional(false)
      ->setHeight(480)
      ->setWidth(940)
      ->setOffsetX(10)
      ->setOffsetY(100);
$shape->getShadow()->setVisible(false)
$shape->getFill()->setFillType(PHPPowerPoint_Style_Fill::FILL_GRADIENT_LINEAR)
             ->setStartColor(new PHPPowerPoint_Style_Color('ddd9c3'))
             ->setEndColor(new PHPPowerPoint_Style_Color('ddd9c3'))
             ->setRotation(270);
$shape->getBorder()->setLineStyle(PHPPowerPoint_Style_Border::LINE_SINGLE);
$shape->getTitle()->setText('');
$shape->getTitle()->getFont()->setItalic(true);
$shape->getPlotArea()->setType($lineChart);
$shape->getView3D()->setRotationX(30);
$shape->getView3D()->setPerspective(30);

这张图表正像预期的那样出来(随附截图),但我想定制3件事:

  • 在图表中添加网格线(可能吗?)
  • 指定图表线的颜色,而不是使用默认的颜色。在一张图表中将有多条图表线。因此,我需要为每一行指定一个自定义颜色。
  • 标注Y轴(目前它是空白的)

屏幕截图

EN

回答 1

Stack Overflow用户

发布于 2013-10-12 03:33:56

我在网上找到了这个图书馆的两个版本。一个在github上,另一个在codeplex上。Github上的那个看起来很新,但是缺少任何类型的文档。Codeplex已经过时,但实际上有代码示例。

tl;博士-不(无论如何在我的测试中),不,和不。

长版本

在浏览代码和查看它创建的XML时,我注意到了以下几点:

  1. 在Powerpoint 2013中,Y Axis (Value Axis)不会出现在生成的文件中,但是打开文件后保存它会导致Y Axis出现。我在XML中看到了轴标签,但是有东西阻止了它的显示。

生成的XML (解压缩生成的.pptx文件后的图表/chart1.xml):

代码语言:javascript
复制
            <c:valAx>
                <c:axId val="52749440"/>
                <c:scaling>
                    <c:orientation val="minMax"/>
                </c:scaling>
                <c:axPos val="l"/>
                <c:numFmt formatCode="" sourceLinked="0"/>
                <c:majorTickMark val="none"/>
                <c:tickLblPos val="nextTo"/>
                <c:txPr>
                    <a:bodyPr/>
                    <a:lstStyle/>
                    <a:p>
                        <a:pPr>
                            <a:defRPr/>
                        </a:pPr>
                        <a:r>
                            <a:rPr lang="en-US" dirty="0"/>
                            <a:t>Y Axis!</a:t>
                        </a:r>
                        <a:endParaRPr lang="en-US" dirty="0"/>
                    </a:p>
                </c:txPr>
                <c:crossAx val="52743552"/>
                <c:crosses val="autoZero"/>
                <c:crossBetween val="between"/>
            </c:valAx>

我通过添加以下行来设置Axis标签:

代码语言:javascript
复制
$shape->getPlotArea()->getAxisX()->setTitle('X Axis!');
$shape->getPlotArea()->getAxisY()->setTitle('Y Axis!');

在脚本中的这一行之后:

代码语言:javascript
复制
$shape->getPlotArea()->setType($lineChart);
  1. 网格线和线条颜色似乎是可能的,但是当前类中没有支持它们的方法。

最近可用的Powerpoint编写类是为2007年提供的,这些类非常过时。XML结构可能需要更新并添加一些附加特性。我将查看一些关于OOXML格式的文档,看看在不从头重写编写类的情况下添加这些文档是多么容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16749043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档