Python-pptx: как обновить данные диаграммы для второй диаграммы, если на одном слайде присутствуют две диаграммы

Я хочу обновить данные диаграммы для моего существующего слайда презентации PowerPoint, имея 2 диаграммы, а именно гистограмму и круговую диаграмму. Я успешно могу обновить гистограмму, так как она была первым элементом моего заполнителя слайда с контентом. Теперь я не уверен, как обновить вторую диаграмму, т.е. круговую диаграмму на том же слайде. Мой код выглядит следующим образом:

prs = Presentation("Request_Slide.pptx")
slide = prs.slides[0]
for shape in slide.placeholders:
     print('%d %s' %(shape.placeholder_format.idx, shape.name))

с выше я получил ответ ниже:

0 Title 1
1 Content Placeholder 5

С помощью этого мне удалось перейти к моей первой диаграмме на слайде [0] и обновить данные ее диаграммы, однако я изо всех сил пытаюсь перейти ко второй диаграмме, присутствующей в заполнителе содержимого. Любые предложения будут иметь большую помощь и спасибо заранее.

Заполнитель — это просто особая категория фигур, и не все фигуры являются заполнителями. Попробуйте вместо этого использовать for shape in slide.shapes и посмотрите, как вы сможете таким образом идентифицировать вторую диаграмму. Возможно, вторая диаграмма была добавлена ​​как отдельная «отдельно стоящая» форма. Насколько мне известно, заполнитель не может напрямую содержать две диаграммы.

scanny 10.12.2020 21:00

@Scanny: С помощью Slide.shapes я получил все фигуры, но обнаружил, что не могу получить доступ к индексу фигур, как показано ниже: prs = Presentation("A-Sample_slide.pptx") slide1 = prs.slides[0 ] для формы в slide1.shapes: print('%d %s' % (prs.slides.index(shape), shape.name)) Вместо этого я получил сообщение об ошибке, например: " поднять ValueError('%s не на слайде коллекция' % слайд) ValueError: <pptx.shapes.graphfrm.GraphicFrame объект по адресу 0x0000019943E14308> не находится в коллекции слайдов"

Rts S 15.12.2020 15:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
620
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Удалось решить, используя список индекса имени формы и используя индекс формы для обновления данных диаграммы, используя приведенный ниже код:

 list_shape_names = [shape.name for shape in slide.shapes]

    if shape_name not in list_shape_names:
        shape_index = None
    else:
        shape_index = list_shape_names.index(shape_name)

Но будьте осторожны при передаче shape_name, поскольку оно будет чувствительно к регистру.

Другие вопросы по теме