使用 par(mfrow=c(2,1)) 时,图表在创建时不显示

When using par(mfrow=c(2,1)) the graphs are not shown while being created

我正在使用 Rstudio,我无法保存绘图,同时在 window 或绘图窗格上创建它们时看到它们。如果我逐行运行:

par(mfrow = c(2, 2))
hist(cars$dist)
hist(cars$dist, breaks=10)
hist(cars$dist, main="1920's Vehicles", xlab="Stopping Distance")

图表已创建并在绘图窗格中逐一显示,但是当我添加保存文件的选项时,当我逐行 运行 时,它们不会显示。文件保存正确,但为什么我看不到呢?

jpeg(file="results/whatever.jpeg")
par(mfrow = c(2, 2))
hist(cars$dist)
hist(cars$dist, breaks=10)
hist(cars$dist, main="1920's Vehicles", xlab="Stopping Distance")

谢谢!

这里显示了我想看到的内容,只有当我跳过保存情节的那一行时才会发生:

通关后非常简单

首先关闭所有可能打开的设备。

graphics.off()

现在设备列表应该是空的。

dev.list()
# NULL

从这点来看,当我们使用 parplothist 或任何与图形相关的功能时,都会打开一个设备。

par(mfrow=c(2, 2))

dev.list()  ## check
# RStudioGD       png 
#         2         3 

Voilá,如果您使用的是 RStudio RStudioGDpng 现在是开放设备!他们显示了他们的 ID。

不确定为什么 RStudio 打开两个设备(相反,例如 VScode 只打开一个 pdf 设备),但我们当前的设备是:

dev.cur()
# RStudioGD
#         2

现在我们通常在这个设备上精确绘图,可以认为是预览设备。

hist(cars$dist)
hist(cars$dist, breaks=10)
hist(cars$dist, main="1920's Vehicles", xlab="Stopping Distance")

如果我们现在使用 dev.off(),设备将关闭并且(预览)情节消失。

当我们使用 jpegpdfpngpostscript 等不同的设备时,情况会有所不同。这里我们需要关闭设备以便保存剧情

jpeg(file="whatever.jpeg")  ## open device

dev.list()  ## check
# jpeg 
#    2 

par(mfrow=c(2, 2))
hist(cars$dist)
hist(cars$dist, breaks=10)
hist(cars$dist, main="1920's Vehicles", xlab="Stopping Distance")

dev.off()  ## close device and save jpeg

注意:正如我所说,如果由于某种原因您最终打开了很多设备,您可以使用 graphics.off().

一次关闭它们

综上所述,要么使用预览设备,要么使用 jpeg 设备。所以你不能同时发生这两种情况。