如何在 python pptx 中编辑图表轴 - 'GraphicFrame' 对象没有属性 'category_axis'
How to edit chart axes in python pptx - 'GraphicFrame' object has no attribute 'category_axis'
我已经使用示例数据成功构建了一个图表,现在正尝试在 python 中设置图表格式。我试图操纵轴但遇到了这个错误:
AttributeError: 'GraphicFrame' 对象没有属性 'category_axis'
我认为问题在于图表的名称是什么,但我已经为已创建的图表尝试了所有可能的方法'name'。
chart_data = CategoryChartData()
chart_data.categories = ['18-24','25-34','35-44','45-54','55-64','65+']
chart_data.add_series('Series 1', (5,19,23,30,17,7))
x2 = Inches(0)
y2 = Inches(2)
cx2 = Inches(3.7)
cy2 = Inches(.75)
agechart = storyboard1.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x2, y2, cx2, cy2, chart_data)
category_axis = agechart.category_axis
category_axis.has_major_gridlines = False
category_axis.tick_lables.font.size = Pt(8)
value_axis = agechart.value_axis
value_axis.has_minor_gridlines = False
value_axis.Maximum_scale = 100.0
我预计主要网格线会消失,类别轴的字体大小会下降到 8,而值轴的网格线也应该被删除,比例也应该被更改。当然,none 发生这种情况是因为:
AttributeError: 'GraphicFrame' 对象没有属性 'category_axis'
请帮忙,谢谢!
有点counter-intuitive,但是.add_chart()
方法没有return图表; return包含图表的GraphicFrame
形状。因此,要获得您需要的图表:
agechart = storyboard1.shapes.add_chart(...).chart
注意最后的 .chart
。
如果您需要更改位置或大小,则需要形状本身,但几乎所有其他内容都在图表 object 中(图表不是形状)。
基本思想是图表、tables、smart-art 和一两个其他视觉项目不是 PowerPoint 形状,而是 Microsoft Office 文件格式共享的图形对象(想想 Excel 图表与 PowerPoint 图表相同,只是在不同的 "host" 文档中。
因为这些不是形状,所以不能直接放在幻灯片上;他们需要某种 容器 形状来容纳它们,可以 出现在幻灯片上的形状。这就是 GraphicFrame 形状。它可以容纳图表、table、smart-art,可能还有其他一些东西。
请注意,tables 以类似的方式工作。 SlideShapes.add_table()
也是一个 GraphicFrame 对象,需要访问 .table
才能获得实际的 table 对象。
我已经使用示例数据成功构建了一个图表,现在正尝试在 python 中设置图表格式。我试图操纵轴但遇到了这个错误:
AttributeError: 'GraphicFrame' 对象没有属性 'category_axis'
我认为问题在于图表的名称是什么,但我已经为已创建的图表尝试了所有可能的方法'name'。
chart_data = CategoryChartData()
chart_data.categories = ['18-24','25-34','35-44','45-54','55-64','65+']
chart_data.add_series('Series 1', (5,19,23,30,17,7))
x2 = Inches(0)
y2 = Inches(2)
cx2 = Inches(3.7)
cy2 = Inches(.75)
agechart = storyboard1.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x2, y2, cx2, cy2, chart_data)
category_axis = agechart.category_axis
category_axis.has_major_gridlines = False
category_axis.tick_lables.font.size = Pt(8)
value_axis = agechart.value_axis
value_axis.has_minor_gridlines = False
value_axis.Maximum_scale = 100.0
我预计主要网格线会消失,类别轴的字体大小会下降到 8,而值轴的网格线也应该被删除,比例也应该被更改。当然,none 发生这种情况是因为:
AttributeError: 'GraphicFrame' 对象没有属性 'category_axis'
请帮忙,谢谢!
有点counter-intuitive,但是.add_chart()
方法没有return图表; return包含图表的GraphicFrame
形状。因此,要获得您需要的图表:
agechart = storyboard1.shapes.add_chart(...).chart
注意最后的 .chart
。
如果您需要更改位置或大小,则需要形状本身,但几乎所有其他内容都在图表 object 中(图表不是形状)。
基本思想是图表、tables、smart-art 和一两个其他视觉项目不是 PowerPoint 形状,而是 Microsoft Office 文件格式共享的图形对象(想想 Excel 图表与 PowerPoint 图表相同,只是在不同的 "host" 文档中。
因为这些不是形状,所以不能直接放在幻灯片上;他们需要某种 容器 形状来容纳它们,可以 出现在幻灯片上的形状。这就是 GraphicFrame 形状。它可以容纳图表、table、smart-art,可能还有其他一些东西。
请注意,tables 以类似的方式工作。 SlideShapes.add_table()
也是一个 GraphicFrame 对象,需要访问 .table
才能获得实际的 table 对象。