【问题标题】:ggplot plots in scripts do not display in Rstudio脚本中的 ggplot 图不显示在 Rstudio 中
【发布时间】:2014-12-25 22:54:13
【问题描述】:

我对 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。

【问题讨论】:

    标签: r ggplot2 rstudio


    【解决方案1】:

    解决方案是在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() 默认只输出错误信息的原因。如果你想要其他任何东西,你必须明确要求。

    【讨论】:

    【解决方案2】:

    虽然这是一个相当古老的问题。如果您想在 R Studio 编辑框上使用“源”按钮,我遇到了同样的问题并找到了一个快速的解决方案。

    您可以简单地打开“带有回声的源”(Ctrl + Shift + Enter),并且绘图按预期显示

    【讨论】:

    • 太棒了,不知道!这很好地补充了@Mirosław Zalewski 的解释。
    【解决方案3】:

    我最近偶然发现了这个问题,并意识到最新的方法是在创建情节后致电show(p)

    【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • 谢谢塔尼亚,帮我重新启动了... :-)
    猜你喜欢
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2020-01-14
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多