Поскольку мне нужно было добавить собственный текст к меткам данных диаграммы в python-pptx, я использовал
for point in plot.series[1].points:
frame = point.data_label.text_frame
frame.text = "Test "
for run in frame.paragraphs[0].runs:
run.font.size = Pt(10)
run.font.color.rgb = RGBColor(0x0A, 0x42, 0x80)
Это позволило мне изменить шрифт меток, но мне нужно было их повернуть. Я видел решение из этой другой темы, но оно не работает. Любые идеи?
Решение проблемы
Я считаю, что вам нужно изменить txPr (как в упомянутой вами ветке), но в соответствующем дочернем элементе:
for all_series in range(0, len(plot.series)):
for i in range(0, len(plot.series[all_series]._element)):
if re.sub("{.*}", '', plot.series[all_series]._element[i].tag) == >"dLbls":
txPr = plot.series[all_series]._element[i].get_or_add_txPr()
txPr.bodyPr.set('rot', '-5400000')
Таким образом, вам нужно получить доступ к дочернему элементу "dLbls" в правильном индексе элемента, "[i]" - это отличие от упомянутого потока. Я использую регулярные выражения для получения имени из метода ".tag". Вероятно, есть лучший способ найти правильный индекс, но это как минимум один;)
Это решение повторяется по всем сериям, если вам это не нужно, вы можете пропустить первый цикл (при условии, что вам нужна только 1-я серия):
for i in range(0, len(plot.series[1]._element)):
if re.sub("{.*}", '', plot.series[1]._element[i].tag) == "dLbls":
txPr = plot.series[1]._element[i].get_or_add_txPr()
txPr.bodyPr.set('rot', '-5400000')
Обратите внимание, что это относится только к меткам данных, которые были установлены в одной точке, например, через
plot.series[1].points[0].data_label.text_frame.text = "Foo"
Надеюсь, это поможет:)
Комментариев нет:
Отправить комментарий