在python-pptx中更改饼图的起始角度/第一个切片角度
Change start angle/ first slice angle of PIE chart in python-pptx
我有一个包含多个部分的饼图。我希望某些饼图部分从我提供的角度开始。
PowerPoint 中的饼图"rotation" 功能仅限于定位第一段的 "start" 角度,段仅按顺时针方向增长。
因此您可以指定第一个元素出现在 70 度(从 12 点钟位置顺时针方向)。
目前没有 API 支持,但值在上面@Saleh 提到的位置 XML 中:/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:firstSliceAng
您可以访问 c:doughnutChart
元素:
chart.plots[0]._element
并打印:
print(chart.plots[0]._element.xml)
如果它恰好已经有一个 c:firstSliceAng
元素,您可以更改设置,也许是这样的:
pieChart = chart.plots[0]._element
firstSliceAng = pieChart.xpath("./c:firstSliceAng")
firstSliceAng["val"] = "70"
如果那里没有 firstSliceAng 元素,您需要先使用 lxml
调用来添加它。
以下是python-pptx中改变饼图firstSliceAng的步骤:
- 检查firstSliceAng标签是否存在:
firstSliceAng = pieChart.xpath("./c:firstSliceAng")
print(firstSliceAng)
Expected output:
[<some-object>]
如果列表为空,则表示您需要使用 lxml 或 oxml 添加 firstSliceAng
要使用 lxml 添加它,请使用以下步骤:
tag = tags[0]
child = OxmlElement('c:firstSliceAng')
# keep in mind that **start_angle** should always be string whose value is int and not float
**start_angle = str(int(75.55))**
child.set('val', start_angle+45)
tag.addprevious(child)
要使用 lxml 添加它,请使用以下步骤:
doc = etree.parse(StringIO(xml))
root = doc.getroot()
# keep in mind that **start_angle** should always be string whose value is int and not float
**start_angle = str(int(75.55))**
c = Element(QName(root.nsmap['c'], 'firstSliceAng'), val=start_angle)
present_element = chart.plots[0]._element.xpath('c:varyColors')[0]
present_element.addprevious(c)```
我有一个包含多个部分的饼图。我希望某些饼图部分从我提供的角度开始。
PowerPoint 中的饼图"rotation" 功能仅限于定位第一段的 "start" 角度,段仅按顺时针方向增长。
因此您可以指定第一个元素出现在 70 度(从 12 点钟位置顺时针方向)。
目前没有 API 支持,但值在上面@Saleh 提到的位置 XML 中:/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:firstSliceAng
您可以访问 c:doughnutChart
元素:
chart.plots[0]._element
并打印:
print(chart.plots[0]._element.xml)
如果它恰好已经有一个 c:firstSliceAng
元素,您可以更改设置,也许是这样的:
pieChart = chart.plots[0]._element
firstSliceAng = pieChart.xpath("./c:firstSliceAng")
firstSliceAng["val"] = "70"
如果那里没有 firstSliceAng 元素,您需要先使用 lxml
调用来添加它。
以下是python-pptx中改变饼图firstSliceAng的步骤:
- 检查firstSliceAng标签是否存在:
firstSliceAng = pieChart.xpath("./c:firstSliceAng")
print(firstSliceAng)
Expected output:
[<some-object>]
如果列表为空,则表示您需要使用 lxml 或 oxml 添加 firstSliceAng
要使用 lxml 添加它,请使用以下步骤:
tag = tags[0]
child = OxmlElement('c:firstSliceAng')
# keep in mind that **start_angle** should always be string whose value is int and not float
**start_angle = str(int(75.55))**
child.set('val', start_angle+45)
tag.addprevious(child)
要使用 lxml 添加它,请使用以下步骤:
doc = etree.parse(StringIO(xml))
root = doc.getroot()
# keep in mind that **start_angle** should always be string whose value is int and not float
**start_angle = str(int(75.55))**
c = Element(QName(root.nsmap['c'], 'firstSliceAng'), val=start_angle)
present_element = chart.plots[0]._element.xpath('c:varyColors')[0]
present_element.addprevious(c)```