【发布时间】:2020-02-24 17:14:54
【问题描述】:
使用 R 生成的图如果不能正确导出,则不能用于发布。我在 Windows 机器上工作,并使用 MS Word 2016 进行所有写作目的。所以,我希望将我的图导出为 .wmf 文件(我想 .emf 也可以)。
我用ggplot2 生成所有图表,所以 ggsave (device = "wmf") 似乎是一个不错的选择,我想。但是,我对生成的文件有一个主要问题:点几何似乎被打印为光栅而不是矢量格式。以下是生成简单散点图的示例:
library (ggplot2)
plot_data <- data.frame (a = runif (1:20),
b = seq (1:20))
x11 (width = 3, height = 3)
ggplot (data = plot_data, mapping = aes (x = a, y = b)) +
geom_point () +
labs (x = "my x-label", y = "my y-label") +
theme (panel.background = element_blank(),
panel.border = element_rect (fill = NA, size = 0.7),
axis.ticks = element_line (color = "black", lineend = "round"),
axis.ticks.length = unit (2, "mm"),
axis.text = element_text (color = "black"),
plot.margin = unit(rep (0, 4), "cm")
)
我使用以下代码保存绘图:
ggsave(filename = "my_file.wmf", device = "wmf")
当我在 MS Word 或 Libre Office 中打开绘图时,我发现这些点根本没有以良好的质量呈现。在 Libre Office Draw 中,一个点看起来像这样(放大了很多):
在 MS Word 中,情节如下所示:
用这些“点”:
但是,标签和轴都可以。微软字:
Libre Office 抽奖:
我认为标签、刻度注释和轴(甚至点周围的圆圈)都以矢量格式存储,而点几何图形似乎存储为栅格。我担心,由此产生的地块不可用。所以,我想找到一个选项来强制ggsave () 向量化点几何而不是打印光栅。我非常希望有人能提供帮助 - 我迫切需要一种简单的方法来从 R 导出绘图以供发表,以说服我的实验室更多地依赖 R。
【问题讨论】:
-
可能相关:github.com/ropensci/pdftools/issues/25。
grDevices::pdf.options(useDingbats=FALSE)可能会有所帮助 -
另一种可能不太令人满意的解决方法是更改点形状。正如您在放大图中看到的那样,geom_point 会同时绘制点和笔划 (
shape 19)。笔划看起来没问题,所以你可以使用shape = 1。我认为更好的选择是如上所述更改 Dingbats 选项。我可能也不推荐 Windows 专有文件格式。我个人总是保存为pdf,然后使用 Adobe illustrator 将其导出到任何图像文件。这样,当我的论文不应该被接受并且我需要重新格式化为其他图像格式时,我也能保持灵活性。 -
我会尝试 Dingbats 选项。我知道 Windows 专有文件格式并不理想。但是,我的目标是说服我的同事使用 R 进行绘图。为了做到这一点,我最好只使用 R 和 MS 词来展示一个工作流程。
-
Dingbats 是一个 .pdf - 选项,我想。保存 .wmf 文件时,我得到:
Error in grDevices::win.metafile(...) : unused argument (useDingbats = FALSE) -
对我来说,使用 PDF 有另一个限制:我使用字体“ChantillyLH”,可以通过
extrafont包中的font_import和loadfonts (device = "win")注册。但是,loadfonts (device = "pdf")给出了 ChantillyLH [More than one version of regular/bold/italic found for ChantillyLH. Skipping setup for this font.] 的错误。我无法解决这个问题;我真的尝试了几种方式。 ChantillyLH 似乎不是“标准”字体格式 - 具有“普通”、“斜体”、“粗体”和“粗体”样式的字体格式。不幸的是......