【问题标题】:Editable plots in PowerPoint from python: equivalent of officer and rvg来自 python 的 PowerPoint 中的可编辑绘图:相当于官员和 rvg
【发布时间】:2018-08-03 07:11:57
【问题描述】:

我正在使用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 图表呢?
  • “真实” ppt 图表仅提供有限范围的可能图表,并且不适用于大量数据。我更喜欢在 R 或 python 中创建我的图,然后将它们导出给客户。但是,客户(业务利益相关者、项目经理或客户)通常希望事后进行一些小的更改(更改颜色或字体)。这意味着重新加载数据可能既耗时又昂贵。在 powerpoint 中“事后”修改绘图的能力可以解决这个问题。
  • 使用python-pptx.readthedocs.io/en/latest/user/charts.html之类的东西你有以上所有的优点:你可以在python中创建绘图然后导出到PPT,导出后你可以改变颜色或字体。唯一的区别是,您的幻灯片中有一个实际的 Powerpoint 图表,而不是假的、基于图元的图表。
  • 谢谢@r4ch。这对某些用户来说是一个解决方案,但对我来说,标准的电源点数字并不能满足我的大多数用例。很高兴在这里有链接!
  • 看起来这个函数现在已经失效了。 @JanLauGe 你可以用一个可重现的例子来更新。 > doc

标签: python r plot graphics powerpoint


【解决方案1】:

自 2019 版 MS Office 起,您可以将 svg 文件添加为图像,然后取消组合以使其可编辑。请参阅MS page 上的“将 SVG 图像转换为 Office 形状”。然而,根据我的个人经验,这既不是很稳定也不是很完整

另一种更稳定和完整但仍不完美的方式是在PowerPoint中将其导入为emf文件,这也是一种矢量格式。旧版本的 matplotlib 可以导出为这种格式。对于较新的版本,我导出为svg,然后使用inkscape --file "input.svg" --export-emf "output.emf" 转换为emf,然后将其加载到PowerPoint 中。如果一切正常,再次取消组合对象允许您进行编辑。

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多