2016-10-15 2 views
0

Innerhalb eines Python-pptx-generierten XYchart möchte ich jedem Punkt der Serie Beschriftungen hinzufügen. Code sieht wie folgt aus:python pptx XyChart Einstellung Etikett Schriftgröße

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) 

Der neue Text korrekt eingestellt ist, sondern durch die Ziffern Iterieren Schriftgröße hat keine Wirkung zu ändern. Irgendwelche Ideen, wie ich eine Schriftgrößenänderung für die Etiketten erreichen könnte?

Antwort

1

Sie müssen die Schriftgröße nach den Textrahmen Text hinzufügen.

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) 

Wenn Sie TextFrame.text aufrufen, werden alle vorhandenen Absätze entfernt und ein einziger neuer Absatz angefügt. Währenddessen werden alle Zeichenformatierungen entfernt, um einen "sauberen Slate" zu erzeugen, bevor der angegebene Text hinzugefügt wird.

Ich erinnere mich nicht, ob PowerPoint die auf der Absatzebene eingestellte Schriftart respektiert (unter Verwendung des Elements). Wenn nicht, müssen Sie dies auf der Run-Ebene tun, wie nach der - ODER-Zeile angezeigt.

+0

Vielen Dank, Alternative 2 hat funktioniert. Sie müssen in der Tat durchlaufen die Läufe. – user5664778

Verwandte Themen