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)
只有在粘贴到控制台时才会产生输出,而不是如果来源.
还有其他问题,但两者都没有帮助:
dev.off()变通方法不起作用(" Error in dev.off() : cannot shut down device 1 (the null device)")如何在获取脚本时让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()默认情况下仅输出错误消息的原因.如果您还需要其他任何东西,您必须明确要求.
小智 15
虽然这是一个很老的问题.如果您想在R studio编辑框中使用"source"按钮,我遇到了同样的问题并找到了快速解决方案.
你可以简单地打开"带有回声源"(Ctrl + Shift + Enter),并且图表显示为预期
我在搜索类似问题时发现了这个问题(图未显示在 RStudio 中)。我试图通过分部分运行来解决复杂的 ggplot2 块,但无法在绘图窗口中显示任何内容。
原因:tiff()我之前打开的功能没有关闭。
解决方案:我运行dev.off()了几次直到我之前的所有tiff()函数都完成,然后我能够在 RStudio 中创建绘图并在绘图窗口中查看结果。