保存R中的图以用于grid.exchange

atmip9wb  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(96)

我想做一个复合图形,它是3个面板宽8个面板高。在每个面板内将是一个图形,需要多个R命令来创建,就像前3个图形可能是

#1
plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE)
par(new=TRUE)
plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="")

#2
plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE)
par(new=TRUE)
plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="", col=2)

#3
plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE, col=3)
par(new=TRUE)
plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="")

然后我想使用这样的命令来并排显示这3个:网格排列(绘图1、绘图2、绘图3)
我不知道如何将#1、#2和#3分别保存为plot1、plot2和plot3。如何保存绘图的示例似乎都是基于单个绘图命令,而不是多个命令来绘制绘图。帮助页面说是grob,但没有解释什么是可接受的grob,或者如何创建它。我应该截图并将其保存为jpeg文件吗?
谢谢你的帮助。

vfh0ocws

vfh0ocws1#

你可以设置par(mfrow = c(8, 3))。这将在一个8 x 3网格的面板中绘制每一个图。只有当plot.new被(隐式)调用时,才会继续绘制下一个图。

par(mfrow = c(8, 3))
par(mar = c(0.5, 0.5, 0.5, 0.5)) # Otherwise margins are too large for 24 plots

for(i in 1:24) {
  plot(c(2:20), c(2:20), ylab = "", xlab = "", axes = FALSE, col = 3)
  par(new = TRUE)
  plot(c(1:18), c(1:18), xaxt = "n", type = "l", xlab = "", ylab = "")
}

koaltpgm

koaltpgm2#

更新和解决方案:
不要使用grid.arrange(),不要使用jpeg()recordplot()pdf()ggplot...
下面的代码通过在原始图中添加特征来工作。然后它有助于(在RStudio中)将结果导出为高分辨率PNG。我可以在MS Word中很好地分别标记行/列。

par(mfrow=c(1,3))
#1
plot1=plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE)
par(new=TRUE)
plot1= plot1 + plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="")

#2
plot2 = plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE)
par(new=TRUE)
plot2 = plot2 + plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="", col=2)

#3
plot3 = plot(c(2:20), c(2:20), ylab="", xlab="", axes=FALSE, col=3)
par(new=TRUE)
plot3 = plot3 + plot(c(1:18, c(1:18), xact="n"), type="l", xlab="", ylab="")

相关问题