У меня есть круговая диаграмма с несколькими сегментами в нем. Я хочу, чтобы определенный сегмент пирога начинался с угла, который я предоставляю изображение круговой диаграммы

1
Shrenik Doshi 28 Май 2019 в 15:36

2 ответа

Лучший ответ

Ниже приведены шаги для изменения firstSliceAng круговой диаграммы в python-pptx:

  1. Проверьте, существуют ли теги firstSliceAng или нет:
firstSliceAng = pieChart.xpath("./c:firstSliceAng")
print(firstSliceAng)

Expected output: 
[<some-object>]

Если список пуст, это означает, что вам нужно добавить firstSliceAng, используя lxml или oxml

Чтобы добавить его с помощью 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)```
0
Shrenik Doshi 3 Июн 2019 в 08:43

Функции поворота круговой диаграммы в PowerPoint ограничены позиционированием «начального» угла первого сегмента, причем сегменты растут только по часовой стрелке.

Таким образом, вы можете указать, что первый элемент появляется под углом 70 градусов (по часовой стрелке от положения 12 часов).

В настоящее время нет поддержки API для этого, но значение находится в XML в месте, указанном @Saleh выше: /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
scanny 29 Май 2019 в 16:56
56342471