аргументы класса диаграммы pptx - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь вызвать класс Chart в модуле pptx. У диаграммы есть два аргумента: chartSpace и chart_part. Проблема в том, что я понятия не имею, что это за два аргумента. Вероятно, есть простой ответ на этот вопрос, но я пробовал просмотреть всю документацию и ничего не нашел об этих аргументах. Может кто-нибудь объяснить, что ищут эти аргументы?

from pptx import Presentation
from pptx.enum.chart import XL_CHART_TYPE, XL_TICK_LABEL_POSITION
from pptx.chart.data import CategoryChartData
from pptx.chart.data import ChartData
from pptx.enum.shapes import PP_PLACEHOLDER
from pandas import DataFrame as DF
from pptx.chart.chart import Chart

prs_dir = 'Directory'

layout = prs.slide_layouts[6]
slide = prs.slides.add_slide( layout )

chart_data = ChartData()
chart_data.categories = ['Budget','Actuals']
chart_data.add_series('Budget', (1,21,23,4,5,6,7,35))
chart_data.add_series('Actuals', (1,21,23,4,5,6,7,35))

chart = Chart()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-207-e560d7744421> in <module>
----> 1 chart = Chart()

TypeError: __init__() missing 2 required positional arguments: 'chartSpace' and 'chart_part'```





1 Ответ

2 голосов
/ 06 мая 2020

Класс Chart не предназначен для создания экземпляров напрямую. Используйте метод .add_chart() в коллекции фигур слайдов, чтобы добавить диаграмму.

from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches

# create presentation with 1 slide ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])

# define chart data ---------------------
chart_data = CategoryChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

# add chart to slide --------------------
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

prs.save('chart-01.pptx')

Дополнительные сведения доступны в документации здесь: https://python-pptx.readthedocs.io/en/latest/user/charts.html

...