Подтвердить что ты не робот

Редактируемые графики в PowerPoint из python: эквивалент офицера и rvg

Я использую пакеты officer и rvg для получения графиков из R в MS PowerPoint в виде редактируемой векторной графики. Воспроизводимый пример ниже.

Я ищу способ реализовать эквивалентное решение с помощью Python, предпочтительно используя matplotlib. Важнейшей частью является не создание слайдов из среды IDE, а редактируемая часть векторной графики, т.е. графики должны заканчиваться в PowerPoint как сгруппированные объекты, состоящие из ряда простых геометрий PowerPoint, таких как линии, квадраты и текстовые поля.

Пример R:

library(tidyverse)
library(officer)
library(rvg)

# Get some data and make a plot
ggp <- diamonds %>% 
  group_by(clarity) %>%
  summarise(price = mean(price)) %>%
  ggplot(aes(x = clarity, y = price, fill = clarity)) +
  geom_bar(stat = 'identity', colour = 'black')

# Create a new powerpoint document
doc <- read_pptx()
doc <- add_slide(doc, 'Title and Content', 'Office Theme')
# Add the plot 
doc <- ph_with_vg(doc, ggobj = ggp, type = 'body')  

# Write the document to a file
print(doc, target = 'plots.pptx')

Полученная диаграмма полностью редактируема:

enter image description here

4b9b3361

Ответ 1

Начиная с версии MS Office 2019 года, вы можете добавлять файлы svg в виде изображений, а затем разгруппировать их, чтобы сделать их редактируемыми. См. "Преобразование изображения SVG в форму Office" на этой странице MS. По моему личному опыту, это не является ни очень стабильным, ни полным.

Другой способ, который более стабилен и полон, но все еще не совершенен, - импортировать его в powerpoint как файл emf, который также является векторным форматом. Старая версия matplotlib может экспортироваться в этот формат. Для более новой версии я экспортирую как svg, а затем использую inkscape --file "input.svg" --export-emf "output.emf" для преобразования в emf, который затем загружаю в powerpoint. Разгруппировка объекта снова позволяет редактировать, если все работает хорошо.