Редактируемые графики в 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]()
Ответы
Ответ 1
Начиная с версии MS Office 2019 года, вы можете добавлять файлы svg
в виде изображений, а затем разгруппировать их, чтобы сделать их редактируемыми. См. "Преобразование изображения SVG в форму Office" на этой странице MS. По моему личному опыту, это не является ни очень стабильным, ни полным.
Другой способ, который более стабилен и полон, но все еще не совершенен, - импортировать его в powerpoint как файл emf
, который также является векторным форматом. Старая версия matplotlib может экспортироваться в этот формат. Для более новой версии я экспортирую как svg
, а затем использую inkscape --file "input.svg" --export-emf "output.emf"
для преобразования в emf
, который затем загружаю в powerpoint. Разгруппировка объекта снова позволяет редактировать, если все работает хорошо.