python-pptx: изменить ширину границы для круговой диаграммы - PullRequest
0 голосов
/ 04 марта 2019

Можно ли установить / изменить ширину границы круговой диаграммы в python-pptx?

enter image description here

Я бы изобразил что-то подобное, что бы сработало?

    for idx, point in enumerate(chart.series[0].points):
        point.format.width = Pt(7.25)

1 Ответ

0 голосов
/ 04 марта 2019

Эта функция еще не поддерживается API python-pptx, но вы можете сделать это, адаптировав обходной путь, подобный следующему:

from pptx.dml.color import RGBColor
from pptx.dml.line import LineFormat
from pptx.oxml import parse_xml
from pptx.oxml.ns import nsdecls
from pptx.util import Pt

plotArea = chart._chartSpace.plotArea
# ---get-or-add spPr---
spPrs = plotArea.xpath("c:spPr")
if len(spPrs) > 0:
    spPr = spPrs[0]
else:
    # ---add spPr---
    spPr_xml = (
        "<c:spPr %s %s>\n"
        "  <a:noFill/>\n"
        "  <a:ln>\n"
        "    <a:solidFill>\n"
        "      <a:srgbClr val=\"DEDEDE\"/>\n"
        "    </a:solidFill>\n"
        "  </a:ln>\n"
        "  <a:effectLst/>\n"
        "</c:spPr>\n" % (nsdecls("c"), nsdecls("a"))
    )
    spPr = parse_xml(spPr_xml)
    plotArea.insert_element_before(spPr, "c:extLst")

line = LineFormat(spPr)
line.color.rgb = RGBColor.from_text("DEDEDE")
line.width = Pt(2)

Объект LineFormat, сформированный таким образом, имеет все методыи свойства, описанные здесь:
https://python -pptx.readthedocs.io / en / latest / api / dml.html # lineformat-objects

Вероятно, имеет смысл извлечь большинствоэтого кода в метод chart_border(chart), который возвращает объект LineFormat для диаграммы, после чего вы можете манипулировать им обычным способом.

...