0

在 python-pptx 生成的 XYchart 中,我想为系列的每个点添加标签。代码如下所示:

for p, v in zip(chart.series[0].points, dataSeries):
    p.data_label.position = XL_LABEL_POSITION.ABOVE
    p.data_label.text_frame.clear()
    for paras in p.data_label.text_frame.paragraphs:
        paras.font.size = Pt(10)
    p.data_label.text_frame.text = str.format('{0:.1f}', v)

新文本设置正确,但通过 paras 迭代更改字体大小无效。有什么想法可以改变标签的字体大小吗?

4

1 回答 1

2

添加文本框文本,您需要设置字体大小。

data_label = p.data_label
...
text_frame = data_label.text_frame
# text_frame.clear()  # this line is not needed, assigning to .text does this
text_frame.text = str.format('{0:.1f}', v)
for paragraph in text_frame.paragraphs:
    paragraph.font.size = Pt(10)

# -- OR --

for run in text_frame.paragraphs[0].runs:
    run.font.size = Pt(10)

当您调用 时TextFrame.text,将删除所有现有段落并添加一个新段落。在此过程中,在添加指定文本之前,将删除所有字符格式以生成“干净的状态”。

我不记得 PowerPoint 是否尊重在段落级别设置的字体(使用a:defRPr元素)。如果没有,您需要在运行级别执行此操作,如 -- OR -- 行之后所示。

于 2016-10-15T20:30:32.123 回答