0

我经常使用python-pptx,当前版本为0.6.6....

现在我想设置一个有两个值轴的图表,一个在左边,一个在右边,就像这样:

在python-pptx的文档中,value_axis是通过chart.value_axis访问的,但是我还没有找到关于如何设置两个值轴的任何描述(具有自己的maximum_scale/minimum_scale/major_unit)。

有什么线索吗?

具有两个值轴的图片

根据Scanny的回答,我对lxml进行了一些研究,但我发现它不起作用(下面附上代码,只是想测试将axPos更改为r是否会生效)。就像这篇文章一样:

Python PPTX 条形图负值

我也有同样的问题,当我设置 invert_if_negative 选项时,lxml 层可能会发生一些事情,并且使 lxml 值的操作对 ppt 没有影响?

if 'import':
    from pptx import Presentation
    from pptx.util import *
    from pptx.chart.data import ChartData
    from pptx.enum.chart import *
    import pandas as pd

if __name__ == '__main__':

    prs = Presentation()    
    slide = prs.slides.add_slide(prs.slide_layouts[6])

    df = pd.DataFrame({'Term': ('1Y', '2Y', '3Y', '4Y', '5Y'), 'A': (2.3, 2.6, 2.7, 2.8, 3.0), 'B': (6, 7.1, 7.5, 6.9, 8)})    

    chart_data = ChartData()
    chart_data.categories = df.Term
    seriesA = chart_data.add_series('A', df.A)
    seriesB = chart_data.add_series('B',df.B)
#    seriesA.invert_if_negative = False
#    seriesB.invert_if_negative = False

    x, y, cx, cy = Inches(0.5), Inches(2), Inches(8.5), Inches(4.5)
    chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE, x, y, cx, cy, chart_data).chart    

    cvaxis = chart.value_axis    
    axPos = cvaxis._element.find('{http://schemas.openxmlformats.org/drawingml/2006/chart}axPos')
    print (axPos.values())
    axPos.set('val','r')
    print (axPos.values())

    prs.save('test123.pptx')
4

1 回答 1

1

辅助轴尚未在python-pptx. 您必须开发一些使用lxml调用来操作 XML 的代码。您可以通过搜索“python-pptx workaround function”找到更多信息。

基本要点是您使用python-pptx尽可能接近所需的 XML 元素,然后使用lxml“底层”APIpython-pptx来完成其余工作。

于 2017-07-12T03:57:24.530 回答