编辑幻灯片中的可编辑图表:Python中officer和rvg的等价物

14

我正在使用officerrvg包,将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')

生成的图表是可以完全编辑的:

输入图片描述


我不知道有哪些Python包可以实现这个。但是,为什么你更喜欢用PPT基元制作的假图表而不是真正的PPT图表呢? - gnvk
2
“真实的”PPT图表只提供了有限的可能绘图范围,并且在大量数据上效果不佳。我更喜欢在R或Python中创建我的图表,然后将它们导出给客户。然而,经常会有客户(业务利益相关者、项目经理或客户)想要稍作修改(更改颜色或字体)。这意味着重新加载数据,这可能耗时且昂贵。在PowerPoint中修改图表“事后”能够解决这个问题。 - JanLauGe
1
使用类似 https://python-pptx.readthedocs.io/en/latest/user/charts.html 这样的工具,你可以享受到以上所有优势:你可以在Python中创建图表,然后导出到PPT,在导出后还能够随意更改颜色或字体。唯一的区别是,你不再使用假的基于原始图形的图表,而是在幻灯片中拥有实际的Powerpoint图表。 - gnvk
1
感谢@r4ch。这对一些用户来说是一个解决方案,但对于我来说,标准的PowerPoint图形在大多数情况下并不够用。无论如何,在这里放链接还是很好的! - JanLauGe
看起来这个函数现在已经过时了。@JanLauGe,你能否提供一个可重现的例子进行更新。> doc <- ph_with_vg(doc, ggobj = ggp, type = 'body') 错误:'ph_with_vg'已经过时。 请使用'officer::ph_with'代替。 请参阅帮助文档("Defunct")。 - Jas
显示剩余2条评论
1个回答

1
自2019版的MS office以来,您可以将svg文件添加为图像,然后取消组合以使其可编辑。请参见此MS页面上的“将SVG图像转换为Office形状”。根据我的个人经验,这种方法既不是很稳定也不是很完整
另一种更加稳定和完整(虽然仍然不完美)的方法是将其作为emf文件导入到PowerPoint中,这也是一种矢量格式。旧版本的matplotlib可以导出此格式。对于更新的版本,我将其导出为svg,然后使用inkscape --file "input.svg" --export-emf "output.emf"进行转换,然后在PowerPoint中加载emf。如果一切顺利,再次取消组合对象即可进行编辑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接