在python pptx中更改饼图的开始角度/第一个切片角度
我有一个饼图,里面有多个部分。我希望某些饼图片段从我提供的角度开始 PowerPoint中的饼图“旋转”功能仅限于定位第一个线段的“开始”角度,线段仅沿顺时针方向增长 因此,您可以指定第一个元素以70度的角度显示(从12点钟位置顺时针) 目前没有对此的API支持,但该值在上面@Saleh提到的位置的XML中:在python pptx中更改饼图的开始角度/第一个切片角度,python,python-pptx,Python,Python Pptx,我有一个饼图,里面有多个部分。我希望某些饼图片段从我提供的角度开始 PowerPoint中的饼图“旋转”功能仅限于定位第一个线段的“开始”角度,线段仅沿顺时针方向增长 因此,您可以指定第一个元素以70度的角度显示(从12点钟位置顺时针) 目前没有对此的API支持,但该值在上面@Saleh提到的位置的XML中:/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:firstSliceAng 您可以在以下位置访问c:doughnutChart元素: chart.
/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中更改piechart的firstSliceAng的步骤:
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)
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)```
请附上一张照片。饼图中如何包含多个饼?你想从哪一部分开始?它默认做什么?嘿@scanny!对于我们的项目,我编辑了
/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:firstSliceAng
。默认值为0,我将其更改为270,效果很好。但请注意,我正在使用的饼图中只有1个系列。试试你的图表,让我们知道它是否有效。实际上我指的是多段。编辑上述问题并添加图像。我要华氏70度
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)```