You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用python-pptx绘制XY散点图报错,寻求解决方案

解决python-pptx绘制XY散点图的AttributeError问题

我一看你的代码就发现问题啦——你在处理图表数据的时候搞错了python-pptx的API用法,导致了AttributeError: type object 'XySeriesData' has no attribute 'xml_bytes'这个错误。

错误原因拆解

  • 你直接把XySeriesData类本身赋值给了chart_data,而没有创建它的实例(也就是没加括号())。
  • python-pptx中,XY散点图需要用XyChartData作为顶层数据容器,然后往里面添加XySeries对象来存储X/Y值,而不是直接操作XySeriesData

修正后的完整代码

from pptx import Presentation
from pptx.util import Inches,Pt
from pptx.enum.chart import XL_CHART_TYPE
from pptx.chart.data import XyChartData, XySeries

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
blank_slide_layout = prs.slide_layouts[6]

# 添加标题幻灯片
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"

# 正确构建XY散点图数据
chart_data = XyChartData()  # 创建顶层数据容器实例
# 添加一个系列,设置名称(可选),并传入X/Y值
series = chart_data.add_series("测试系列", x_values=[0,1,2,3,4,5], y_values=[10,22,33,38,40,43])

# 在空白幻灯片添加散点图
slide2 = prs.slides.add_slide(blank_slide_layout)
x, y, cx, cy = Inches(1), Inches(2), Inches(8), Inches(3)
chart = slide2.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER, x, y, cx, cy, chart_data).chart

prs.save('test1.pptx')

关键修正点说明

  1. 替换数据容器:用XyChartData()创建顶层数据容器,这是python-pptx要求的图表数据入口。
  2. 正确添加系列:通过chart_data.add_series()方法创建并添加XySeries,这个方法会帮你处理底层的XySeriesData逻辑,不需要手动操作。
  3. 实例化对象:所有需要使用的类都要加()创建实例,而不是直接用类本身。

这样修改后,代码就能正常生成包含XY散点图的PPT文件了。

内容的提问来源于stack exchange,提问作者user2774120

火山引擎 最新活动