代码之家  ›  专栏  ›  技术社区  ›  David Zemens

在python pptx中更改序列填充颜色

  •  1
  • David Zemens  · 技术社区  · 8 年前

    我刚开始使用python pptx,但是在win32com、visual basic、interop等之间使用powerpoint有着相当丰富的经验,在用一个系列创建图表时,我看到了一些有趣的东西。

    问题: 默认情况下,只有一个系列的图表的填充颜色可能不同 每个点/类别 是的。这与我所期望的相反:序列中的所有点都应该具有相同的颜色。(例如,使用win32com,这些图表在所有点上都有一个单一的、一致的颜色,但是win32com有一些非常费解的东西,需要基本上重建图表数据并覆盖默认值,加上整个 Application 实例是在幕后进行的,这在openxml或pptx等中是没有的,所以这可能是造成这种明显差异的一个因素)

    enter image description here

    问题: 对于具有单个序列的图表,这是正常/预期的行为吗?还是我忽略了一些显而易见的事情?

    我看到一个 similar question 我可以修改你的评论,使系列的格式一致(如下),但我主要想知道这是必要的,还是我做错了什么:

    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
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   scanny    8 年前

    这是预期的行为。更改它的简单方法是设置 _BasePlot.vary_by_categories 属性到 False 以下内容:

    plot = chart.plots[0]
    plot.vary_by_categories = False