use*_*120 1 python python-pptx
我正在尝试使用 x 和 y 系列数据制作一个简单的 python-pptx xy 散点图,但到目前为止尚未成功。
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')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
文件“C:\Users\adnan\Google Drive\Learning\Python\5g_tti_parser\untitled0.py”,第 31 行,chart = slip2.shapes.add_chart(XL_CHART_TYPE.XY_SCATTER, x, y, cx, cy, Chart_data)。图表
文件“C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ pptx \ shapes \ shapetree.py”,第250行,在add_chart rId = self.part.add_chart_part(chart_type,chart_data)
文件“C:\ProgramData\Anaconda3\lib\site-packages\pptx\parts\slide.py”,第174行,在add_chart_part中chart_part = ChartPart.new(chart_type,chart_data,self.package)
文件“C:\ProgramData\Anaconda3\lib\site-packages\pptx\parts\chart.py”,第 30 行,在新的 Chart_blob = Chart_data.xml_bytes(chart_type) 中
AttributeError:类型对象“XySeriesData”没有属性“xml_bytes”
我今天也在研究这个问题 - 看起来你跳过了一些步骤。
确保您拥有正确的进口产品,其中包括:
from pptx.chart.data import XySeriesData, XyChartData
Run Code Online (Sandbox Code Playgroud)
更改这一行:
chart_data = XySeriesData
Run Code Online (Sandbox Code Playgroud)
实例化 XyChartData 类:
chart_data = XyChartData()
Run Code Online (Sandbox Code Playgroud)
然后您需要添加一个系列(创建 XySeries 对象),为其指定名称和数字格式(我使用 None )
chart_data.add_series('name_of_series', number_format= None)
Run Code Online (Sandbox Code Playgroud)
然后
chart_data.x_values=[0,1,2,3,4,5]
chart_data.y_values=[10,22,33,38,40,43]
Run Code Online (Sandbox Code Playgroud)
我不完全确定这是否能解决您的问题,但我希望它有所帮助。我今天能够以这种方式替换散点图中的数据。
编辑:
在 Chart_data 对象上设置 x_values 和 y_values 不一致且不可靠。在下面的示例中,将数字列表设置为变量名称。为了清楚起见,我使用 x_values_list 和 y_values_list。
新方法:
将 add_series 对象保存到变量中,并分别添加 x 和 y 数据点。
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)
Run Code Online (Sandbox Code Playgroud)
此时,chart_data 包含您的系列对象,并且可以插入到图表形状中,而 cd 代表 XySeries 对象。我认为 x_values 和 y_values 可能更多地是作为访问者而不是编写者?我无法在 XySeries 级别成功设置这些值。我在尝试将我的列表设置为 XyChartData 级别的这些属性时遇到了很多问题。这功能好多了。
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |