脚本中的ggplot图不会显示在Rstudio中

Sup*_*est 66 r ggplot2 rstudio

我对Rstudio有一个奇怪的问题:如果脚本调用ggplot2函数来显示一个图,那么使用Source来运行脚本不会产生图.如果我选择与整个脚本Ctrl+A,然后运行当前行或选择(Ctrl+Enter),然后剧情确实显示.同样,在控制台中键入绘图命令会产生正确的输出.

例如:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()
Run Code Online (Sandbox Code Playgroud)

只有在粘贴到控制台时才会产生输出,而不是如果来源.

还有其他问题,但两者都没有帮助:

如何在获取脚本时让Rstudio显示绘图?我使用的是Rstudio 0.98.1062和R 3.1.1.

Mir*_*osz 109

解决方案是显式调用print()ggplot对象:

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)
Run Code Online (Sandbox Code Playgroud)

ggplotfunction返回类ggplot的对象; ggplot2通过重载print函数来对ggplot类的对象表现不同 - 而不是将它们打印到STDOUT,它创建了图表.

一切都在交互模式下运行良好,因为R假设大多数命令都是通过print()函数运行的.这是为了我们的方便,允许我们输入rnorm(1)并获得任何可见的输出.当使用运行当前选择命令(Ctrl+Enter)时,RStudio表现为每个选定的行都以交互模式键入并运行.您可以通过Console在运行几个选定行后检查窗格中的命令历史记录来验证这一点.

但是当读取文件时,这种方便的模式被放弃了source().由于此函数旨在运行(可能长且计算成本高)R脚本,因此不希望用低优先级消息污染STDOUT.这就是source()默认情况下仅输出错误消息的原因.如果您还需要其他任何东西,您必须明确要求.

  • 我讨厌所有这些教程网站甚至没有提到你必须调用打印。资料来源:https://datacarpentry.org/R-ecology-lesson/04-visualization-ggplot2.html (2认同)

小智 15

虽然这是一个很老的问题.如果您想在R studio编辑框中使用"source"按钮,我遇到了同样的问题并找到了快速解决方案.

你可以简单地打开"带有回声源"(Ctrl + Shift + Enter),并且图表显示为预期


Sup*_*est 11

我最近发生在这个问题上,并意识到最新的方法是show(p)在创建情节后调用。


Tan*_*nia 5

我在搜索类似问题时发现了这个问题(图未显示在 RStudio 中)。我试图通过分部分运行来解决复杂的 ggplot2 块,但无法在绘图窗口中显示任何内容。

原因:tiff()我之前打开的功能没有关闭。

解决方案:我运行dev.off()了几次直到我之前的所有tiff()函数都完成,然后我能够在 RStudio 中创建绘图并在绘图窗口中查看结果。