首页 > 解决方案 > [[base R]] 有两个图形设备同时打开,并在两者之间翻转

问题描述

我有一个双 for 循环,例如:

for (alphabet in c("A","B")) {
   for (number in c(1,6)) {
      plot(......)
   }
}

我想要做的是将总共 12 个图按这样的方式排列,最后导出两个 png,每个包含 {{A1~3,B1~3}} 和 {{A4~6,B4 ~6}} 分别。

我不确定在哪里调用 png() 来实现这一点。

我的实验室坚持我只使用base R..

谢谢你。

标签: rplotpng

解决方案


1)先做第一组,再做第二组。

png("first.png")
par(mfcol = 3:2)
for (a in c("A","B")) for(n in 1:3) plot(0, main = paste(a, n))
dev.off()

png("second.png")
par(mfcol = 3:2)
for (a in c("A","B")) for(n in 4:6) plot(0, main = paste(a, n))
dev.off()

这是第一个.png。second.png 类似。

截屏

2)虽然如果你真的想来回切换,(1)看起来更简单:

png("first.png")
first <- dev.cur()
par(mfcol = 3:2)

png("second.png")
second <- dev.cur()
par(mfcol = 3:2)

for (a in c("A","B")) {
   for (n in 1:6) {
     dev.set(if (n <= 3) first else second)
     plot(0, main = paste(a, n))
   }
}

dev.off(first)
dev.off(second)

推荐阅读