使用python-pptx

问题描述

我正在尝试使用python-pptx模块在​​同一张图上绘制多个折线图。这是我的数据:

month   desc value
201911   a  1164
201912   a   971
202001   a  1125
202005   b  1549
202005   a  1038
202006   b  1244
202006   a  1475
202007   a   960
    

month列的范围可以是201910 to 202008

我用abmonth on X axis desc列值绘制折线图

代码如下:

chart_data = ChartData()
cat=list(data["month"].unique())
chart_data.categories = cat
data=data.sort_values(['month'],ascending=[True])
for i in list(data["desc"].unique()):
            
    
    chart_data.add_series(i,tuple(data[data['desc']==i]['value']))
    
    x,y,cx,cy = Inches(1),Inches(1),Inches(9),Inches(6)
    chart = slide.shapes.add_chart(XL_CHART_TYPE.LINE,x,cy,chart_data).chart

正如我们在desc列中看到的a的值和b的值不同。

该图给出了x轴和y轴值的错误对齐方式。

enter image description here

b的绘图从201911开始...但是它应该从202005开始。该如何纠正?

解决方法

您需要使用None作为您不想绘制的任何点的值。我看起来您的数据检索只是 omits 丢失的数据点。您需要获取它,以便类别序列和值序列(对于每个系列)具有相同的长度并按位置对齐。

赞:

categories = ("Jan","Feb","Mar")
series_values = (1,2,3)

如果缺少1月和2月的值,请发送:

categories = ("Jan","Mar")
series_values = (3)

将为您提供示例中的图表。它需要的是:

categories = ("Jan","Mar")
series_values = (None,None,3)