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

时间:2014-10-30 02:04:20

标签: r ggplot2 rstudio

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

例如:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()

只有在粘贴到控制台时才会生成输出,而不是源代码。

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

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

4 个答案:

答案 0 :(得分:102)

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

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)

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

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

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

答案 1 :(得分:15)

虽然这是一个很老的问题。我有同样的问题并找到了一个快速的解决方案,如果你想使用&#34; source&#34; R工作室编辑框上的按钮。

你可以简单地打开&#34;来源回声&#34; (Ctrl + Shift + Enter),图表显示为预期

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

原因:我先前打开的tiff()函数没有关闭。

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