使用 python-pptx 绘制多折线图时如何处理缺失的 x 轴值
How to handle missing x-axis values when plotting multiple line charts using 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
。
我用 month on X axis
.
为 a
和 b
desc colum 值绘制折线图
代码如下:
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, y, cx, cy, chart_data).chart
我们可以看到 desc 列中 a
的值与 b
中的值不同。
该图给出了 x 轴和 y 轴值的错误对齐。
b
的情节从 201911
开始……但是它应该从 202005
开始。如何纠正?
您需要使用 None
作为您不想绘制的任何点的值。我看起来你的数据检索只是 忽略了 缺失的数据点。您需要获取它,以便类别序列和值序列(对于每个系列)长度相同并按位置对齐。
喜欢:
categories = ("Jan", "Feb", "Mar")
series_values = (1, 2, 3)
如果缺少 1 月和 2 月的值,发送:
categories = ("Jan", "Feb", "Mar")
series_values = (3)
将为您提供与示例中的图表类似的图表。它需要的是:
categories = ("Jan", "Feb", "Mar")
series_values = (None, None, 3)
我正在尝试使用 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
。
我用 month on X axis
.
a
和 b
desc colum 值绘制折线图
代码如下:
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, y, cx, cy, chart_data).chart
我们可以看到 desc 列中 a
的值与 b
中的值不同。
该图给出了 x 轴和 y 轴值的错误对齐。
b
的情节从 201911
开始……但是它应该从 202005
开始。如何纠正?
您需要使用 None
作为您不想绘制的任何点的值。我看起来你的数据检索只是 忽略了 缺失的数据点。您需要获取它,以便类别序列和值序列(对于每个系列)长度相同并按位置对齐。
喜欢:
categories = ("Jan", "Feb", "Mar")
series_values = (1, 2, 3)
如果缺少 1 月和 2 月的值,发送:
categories = ("Jan", "Feb", "Mar")
series_values = (3)
将为您提供与示例中的图表类似的图表。它需要的是:
categories = ("Jan", "Feb", "Mar")
series_values = (None, None, 3)