答案 0 :(得分:1)
PowerPoint中的饼图“旋转”功能仅限于定位第一个线段的“起始”角度,而线段仅沿顺时针方向增长。
因此,您可以指定第一个元素以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
调用来首先添加它。
答案 1 :(得分:0)
如果chart.plots[0]._element.xml
中不存在c:firstSliceAng,则可以按以下代码添加firstSliceAngle:
tag = tags[0]
child = OxmlElement('c:firstSliceAng')
child.set('val', "70")
tag.addnext(child)
但是一旦我添加了“ c:firstSliceAng”,pptx将无法在MS Office中打开。
答案 2 :(得分:0)
下面是在python-pptx中更改饼图的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)```