【问题标题】:Save par(mfrow) multipanel output as svg将 par(mfrow) 多面板输出另存为 svg
【发布时间】:2021-12-10 00:54:07
【问题描述】:

我正在使用 par(mfrow) 生成三个独立图形输出对象的多面板图。下面的示例代码代表了我拥有的对象的一个​​非常简化的版本。

如何使用 ggsave 将这些图保存为单个对象?我尝试将 par(mfrow) 命名为对象并绘制它,但这似乎不起作用。

也欢迎任何有关生成/保存多面板图的替代方法的建议!如果我可以澄清问题或示例,请告诉我。谢谢!

par(mfrow = c(1,3), mar = c(10, 5, 5, 3), xpd = TRUE) 
hist(x = rnorm(100), col = "skyblue", main = "X")
hist(x = rnorm(50), col = "green", main = "Y")
legend("bottom", c("Blue", "Green", "Purple"),
        title = "Sample Data", horiz = TRUE, inset = c(0, -0.4),
        col = c("skyblue", "green", "purple"), pch = rep(15,2),
        bty = "n", pt.cex = 1.5, text.col = "black")
hist(x = rnorm(75), col = "purple", main = "Z")

【问题讨论】:

  • (1) ggsave 保存 ggplot2 图形,这都是基础 R 图形,所以 ggsave 将不起作用。 (2) 从svg("path/to/file.svg")开始之前您对par(mfrow=..)的调用,然后添加dev.off()之后您最后一个hist(.)。您可能更愿意在调用 svg 时指定维度,有关详细信息,请参阅其帮助文档。

标签: r svg par


【解决方案1】:

如果您想使用 Inkscape 或类似程序编辑图形,我建议使用 svglite 而不是 svg,因为您将无法编辑文件中的文本(更改文本、字体或大小)由svg 制作。这是一个对您的原始代码进行一些修改的示例:

library(svglite)
svglite("MyPlots.svg", width=8, height=6)
par(mfrow = c(1,3), mar = c(10, 5, 5, 3), xpd = TRUE, mgp=c(1.75, .75,  0)) 
hist(x = rnorm(100), col = "skyblue", main = "X")
hist(x = rnorm(50), col = "green", main = "Y")
legend("bottom", c("Blue", "Green", "Purple"),
        title = "Sample Data", horiz = TRUE, inset = c(0,  -0.2),
        col = c("skyblue", "green", "purple"), pch = rep(15,2),
        bty = "n", pt.cex = 1.5, text.col = "black")
hist(x = rnorm(75), col = "purple", main = "Z")
dev.off()

【讨论】:

  • 谢谢你,@dcarlson!我很高兴知道 svglite 将在以后启用编辑 - 非常有帮助!
  • @dcarlson,svg 不能用 Inkscape 之类的东西进行渲染后编辑的断言是怎么回事?除了一些不同的对象分组之外,我看不出有什么不同。
  • svg 中的文本呈现为矢量,因此您无法选择文本框并编辑其中的文本。如果您使用文本编辑器查看每个生成的文件,您将在svglite 生成的文件中看到文本标签,但在svg 生成的文件中看不到。不利的一面是svg 中的文本会在您放大或缩小图像时自动放大或缩小,但svglite 中的文本不会。您必须在此处选择文本框并更改字体大小。
  • 这是一个简单的可重现示例。运行 plot.new(); text(.5, .5, "This is some text.")svgsvglite 并使用文本编辑器比较文件。 svg 文件大约大 8 倍。
猜你喜欢
  • 2013-01-17
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多