RStudio突然停止在绘图窗格中显示图形

35

RStudio不再在绘图窗格中显示生成的图形,而是在名为“Quartz”的单独文件中打开。 这是我的会话信息:

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.9.5 (Mavericks)

locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] cluster_2.0.4 tm_0.6-2      NLP_0.1-9     ggplot2_2.1.0

loaded via a namespace (and not attached):
 [1] colorspace_1.2-6 scales_0.4.0     plyr_1.8.4       parallel_3.3.1   tools_3.3.1      gtable_0.2.0     Rcpp_0.12.5      slam_0.1-35     
 [9] grid_3.3.1       munsell_0.4.3   

我尝试了 工具 > 全局选项 > 窗格 > 选中绘图。

我不知道还有什么其他信息可以分享。我可以看到带有“绘图”标签的绘图窗格,但是里面是空白的。

屏幕截图:

注意到新菜单出现了,上面写着“Quartz”。不确定这是什么,但当R生成图形并且通常的RStudio菜单消失时,它就会出现。

如何让RStudio在绘图窗格中显示绘图?


1
你可以尝试重新安装/更新RStudio,但不确定这是否能解决问题。首先,退出(command + q)RStudio并重新启动它,看看是否有帮助。 - lmo
1
嗨,我重新安装了一下,这似乎已经解决了问题。保留问题开放,以防其他人知道为什么RStudio会出现这种情况以及如何修复它。 - Doug Fir
10个回答

51

尝试运行以下代码:

dev.off()

检查它是否有效:

plot(rnorm(50), rnorm(50))

16
你好,"Error in dev.off() : cannot shut down device 1 (the null device)" 的意思是“在关闭设备1(空设备)时出现错误无法关闭”。 - Doug Fir
5
请问您需要把以下英文内容翻译成中文吗?"Would be nice if someone explains what dev.off() does and in which situations it actually helps. I had to call dev.off() several times to get R Studio showing plots again." - normanius
有时候你想在 R 中将文件发送到不同的位置(通常是保存图形到本地文件!)。dev.off() 告诉 R 你已经完成向该文件位置转储数据。 - RegressForward
1
每次这个答案获得新的赞同,我都会重新阅读@normanius的深刻观察,并笑着承认我仍然不明白为什么这样会有效。 - undefined
最好使用 tryCatch({while (T) dev.off()}, error = \(e) NULL) - undefined

20

我正在使用Rmarkdown,对于我的情况,我是这样解决这个问题的:

  1. 前往“工具” -> “全局选项” -> “Rmarkdown”

  2. 在“展示输出预览于”中选择“预览窗格”

  3. 取消选中“为所有R Markdown文档内联显示输出”的框


5
对我来说,以上解决方案都没有起作用。 - Lazarus Thurston

11

按照以下步骤解决问题。

dev.off()
print(plot(1)) # Basically use print command once

现在像平常一样使用plot命令,应该可以正常工作。


8

对我而言,当我首次关闭了@udit-gupta提到的所有设备时,它起作用了。在找到这些设备后,递归关闭所有设备。

dev.cur()
dev.off(i) #where i = index of device to be switched off

使用以下方法找回设备:

getOption("device")

或者

dev.set(which = dev.next())

4

在绘图窗格中,我曾经能够可视化地呈现出情节,但它很快就消失了。所有上述建议的尝试都失败了。下面博客中提到的内容使其正常工作。

https://datasciencelearner.wordpress.com/2014/08/17/my-plot-is-not-showing-up/

技巧是在print函数内部嵌套图形命令,例如:

wrap the graphics command inside print function

print(
    plt2 <- ggplot(housing,
               aes(x = Home.Value)) +
                  geom_histogram()
)

3

我在将R更新到版本3.3.2并使用RStudio 0.98.0之后遇到了同样的问题。安装最新版本的RStudio可以解决这个问题。


5
请问您需要翻译的内容是:"Can you add which versions you updated to make the answer future proof?" ?如果是,我的翻译如下:您能否注明更新的版本以使答案具有未来可靠性? - mpaskov

2

我曾经遇到过同样的问题,但以上提供的解决方案都没有解决这个问题。最终我彻底卸载了Rstudio并重新安装,这之后才能在绘图窗格中看到我的图形。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

0
输入 dev.off() 命令并按 Enter 键,它将解决问题。

0

可能是因为图形设备已经开启。

查找已打开设备的索引:

dev.cur()

关闭设备:

dev.off(i)

其中i是要关闭的设备的索引。


-1
  1. 在菜单栏中点击"视图(view)"。
  2. 选择"窗格(panes)"。
  3. 勾选"所有窗格(all panes)"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接