如何使用python pptx设置甜甜圈图数据标签的字体颜色



我正在尝试使用以下代码格式化甜甜圈图。除了更改数据标签的颜色之外,它什么都做。

d_plot = chart.plots[0]
d_plot.has_data_labels = True
for series in d_plot.series:
values = series.values
counter = 0
for point in series.points:
ddl = point.data_label
ddl.has_text_frame = True
ddl.text_frame.text = str("{:.0%}".format(values[counter]))
ddl.text_frame.paragraphs[0].font.name = "calibri"
ddl.text_frame.paragraphs[0].font.size = Pt(9)
ddl.font.color.rgb = RGBColor(255, 0, 0)
counter = counter + 1`

有办法做到这一点吗?任何帮助都是非常可观的。

尝试一下:

plot = chart.plots[0]
plot.has_data_labels = True
for series in plot.series:
for point, value in zip(series.points, series.values):
data_label = point.data_label
data_label.has_text_frame = True
text_frame = data_label.text_frame
text_frame.text = str("{:.0%}".format(value))
font = text_frame.paragraphs[0].runs[0].font
font.name = "Calibri"
font.size = Pt(9)
font.color.rgb = RGBColor(255, 0, 0)

我看到的主要区别是你倒数第二行:

ddl.font.color.rgb = RGBColor(255, 0, 0)

它在数据标签上查找字体,而不是data_label.text_frame.paragraphs[0]。一旦你在段落的字体上设置了一个属性,它就会覆盖上面定义的任何字体。由于我认为您不关心继承任何字体特征,所以我继续在运行级别设置它们,这将覆盖样式层次结构中更高级别定义的任何内容。

剩下的只是更明确的命名,这是一种同时迭代值和点的更花哨的方式,并避免重复的去引用,特别是使用相同的字体来设置所有字体属性。

最新更新