首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python-pptx不起作用时的xy散点图

python-pptx不起作用时的xy散点图
EN

Stack Overflow用户
提问于 2020-05-30 13:40:13
回答 1查看 590关注 0票数 0

我试图用x和y序列数据做一个简单的python-pptx xy散点图,但到目前为止还没有成功。

代码语言:javascript
运行
复制
from pptx import Presentation
from pptx.util import Inches,Pt

from pptx.enum.chart import XL_CHART_TYPE
from pptx.chart.data import XySeriesData

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

slide = prs.slides.add_slide(title_slide_layout)
slide2 = prs.slides.add_slide(blank_slide_layout)

title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"
chart_data = XySeriesData
chart_data.x_values=[0,1,2,3,4,5]
chart_data.y_values=[10,22,33,38,40,43]
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')

我得到的错误是

文件"C:\Users\adnan\Google第31行,in Drive\Learning\Python\5g_tti_parser\untitled0.py",= slide2.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER,x,y,cx,cy,chart_data).chart

File "C:\ProgramData\Anaconda3\lib\site-packages\pptx\shapes\shapetree.py",第250行,in add_chart rId = self.part.add_chart_part(chart_type,chart_data)

File "C:\ProgramData\Anaconda3\lib\site-packages\pptx\parts\slide.py",第174行,in add_chart_part chart_part = ChartPart.new(chart_type,chart_data,self.package)

文件新行30,在"C:\ProgramData\Anaconda3\lib\site-packages\pptx\parts\chart.py",chart_blob = chart_data.xml_bytes(chart_type)中

AttributeError:类型对象'XySeriesData‘没有特性'xml_bytes’

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-31 04:43:48

我今天也在做这件事--看起来你跳过了一些步骤。

确保您拥有正确的导入,其中包括:

代码语言:javascript
运行
复制
from pptx.chart.data import XySeriesData, XyChartData

更改此行:

代码语言:javascript
运行
复制
chart_data = XySeriesData

要实例化类XyChartData:

代码语言:javascript
运行
复制
chart_data = XyChartData()

然后您需要添加一个序列(创建XySeries对象),给它一个名称和一个数字格式(我使用的是None)

代码语言:javascript
运行
复制
chart_data.add_series('name_of_series', number_format= None)

然后

代码语言:javascript
运行
复制
chart_data.x_values=[0,1,2,3,4,5]
chart_data.y_values=[10,22,33,38,40,43]

我不完全确定这是否能解决你的问题,但我希望它能有所帮助。今天我可以用这种方式替换散点图中的数据。

编辑:

在chart_data对象上设置x_values和y_values是不一致和不可靠的。在下面的示例中,将数字列表设置为变量名。为了清晰起见,我使用了x_values_list和y_values_list。

新方法:

将add_series对象保存到一个变量,并分别添加x&y数据点。

代码语言:javascript
运行
复制
chart_data = XyChartData()    
cd = chart_data.add_series('name_of_series', number_format= None)
    for x, y in list(zip(x_values_list, y_values_list)):
         cd.add_data_point(x, y, number_format=None)

此时,chart_data包含系列对象,可以插入到图表形状中,而cd表示XySeries对象。我认为x_values和y_values更像是访问器,而不是编写器?我无法成功地在XySeries级别设置这些值。在尝试将列表设置为XyChartData级别的这些属性时,我也遇到了许多问题。这样运行起来就好多了。

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

https://stackoverflow.com/questions/62098309

复制
相关文章

相似问题

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