在 python-pptx 中更改系列填充颜色
Changing series fill color in python-pptx
我刚开始使用 python-pptx,但在 win32com、Visual Basic、Interop 等之间使用 Powerpoint 有一定的丰富经验,我在用单个系列创建图表时看到一些有趣的东西.
问题: 具有单个系列的图表,默认情况下,显示 per point/category 不同的颜色填充。这与我的预期相反:一个系列中的所有点都应该具有相同的颜色。 (例如,对于 win32com,这些图表在所有点上都具有单一、一致的颜色,但是 win32com 有一些非常挑剔的东西,需要基本上重建 ChartData 并覆盖默认值,加上整个 Application
实例正在执行它幕后的事情,我们在 OpenXML 或 pptx 等中没有,所以这可能是造成这种明显差异的一个因素)
问题:这是具有单个系列的图表的 normal/expected 行为吗?还是我忽略了一些明显的东西?
我看到了一个 并且我能够在那里调整你的评论以一致地格式化系列(如下),但主要我想知道这是否有必要,或者我是否做错了什么:
def FormatChart(chart):
plot = chart.plots[0]
plot.has_data_labels = True
dl = plot.data_labels
dl.position = XL_LABEL_POSITION.OUTSIDE_END
value_axis = chart.value_axis
value_axis.has_major_gridlines = False
s = plot.series[0]
s.format.fill.solid()
s.format.fill.fore_color.theme_color = MSO_THEME_COLOR_INDEX.ACCENT_1
这是预期的行为。更改它的简单方法是将 _BasePlot.vary_by_categories
属性 设置为 False
:
plot = chart.plots[0]
plot.vary_by_categories = False
我刚开始使用 python-pptx,但在 win32com、Visual Basic、Interop 等之间使用 Powerpoint 有一定的丰富经验,我在用单个系列创建图表时看到一些有趣的东西.
问题: 具有单个系列的图表,默认情况下,显示 per point/category 不同的颜色填充。这与我的预期相反:一个系列中的所有点都应该具有相同的颜色。 (例如,对于 win32com,这些图表在所有点上都具有单一、一致的颜色,但是 win32com 有一些非常挑剔的东西,需要基本上重建 ChartData 并覆盖默认值,加上整个 Application
实例正在执行它幕后的事情,我们在 OpenXML 或 pptx 等中没有,所以这可能是造成这种明显差异的一个因素)
问题:这是具有单个系列的图表的 normal/expected 行为吗?还是我忽略了一些明显的东西?
我看到了一个
def FormatChart(chart):
plot = chart.plots[0]
plot.has_data_labels = True
dl = plot.data_labels
dl.position = XL_LABEL_POSITION.OUTSIDE_END
value_axis = chart.value_axis
value_axis.has_major_gridlines = False
s = plot.series[0]
s.format.fill.solid()
s.format.fill.fore_color.theme_color = MSO_THEME_COLOR_INDEX.ACCENT_1
这是预期的行为。更改它的简单方法是将 _BasePlot.vary_by_categories
属性 设置为 False
:
plot = chart.plots[0]
plot.vary_by_categories = False