为什么我的图表未显示在RStudio的“图”窗格中?

时间:2018-06-26 10:16:51

标签: r ggplot2 rstudio

我编写了几个连接到服务器并收集一些数据并对这些数据进行突变的函数。其中一项功能还可以可视化数据。

由于我始终需要运行所有六个功能-并且因为我是在需要时编写它们的-我决定将它们组合成一个更大的功能(约400行,可能会减少到大约需要350次清理),而不必一个接一个地运行六个独立的功能。

在合并功能之前,产生可视化效果的功能非常完美,因为它显示在RStudio的modal-body窗口中。

由于组合了功能,因此无法显示可视化效果。

我添加了一行以显示图表是否已成功生成,并且始终如此;但是,我再也看不到输出了。

以下是图表的代码:

Plots

默认情况下,if(chart == TRUE){ ggplot(plugin_displays[plugin_displays$date <= end_date, ], aes(fill = type)) + geom_col(aes(x = time, y = count), colour = "black", position = "stack") + geom_text(aes(x = time, y = total, label = total), hjust = -0.15, vjust = 0.15, size = 3, colour = "black", angle = 90) + scale_y_continuous(limits = c(0, max(plugin_displays$total) * 1.02)) + labs(title = paste0("Plugin Loads & Unloads ", start_date, " - ", end_date), x = "Time", y = "Count") + facet_grid(.~date) + scale_fill_manual(values=c("forestgreen", "red")) + theme(plot.title = element_text(size = 25, face = "bold", colour = "black"), panel.grid.minor.x = element_blank(), panel.grid.major.x = element_blank(), axis.text = element_text(colour = "black", angle = 90)) print("Chart printed.") } else { print("Chart not shown by default. Set chart = TRUE to display chart") } 设置为chart,因为并不总是需要图表。要生成图表,用户在调用函数时指定FALSETRUE并生成图形(使用chart = TRUE);否则,这只会​​浪费处理能力。

我认为可能发生的处理顺序会影响输出,因此尽管将{}移至脚本底部,但该图仍未显示在if/else窗格中。显示{1}}条消息。

作为一个整体,该函数可以完美执行,所需的输出正是我想要的输出。

在执行阶段的任何时候都没有错误,并且数据帧都符合预期,没有错。

如果我拆分可视化功能,它将独立运行而不会出现问题。如果我将其放回函数中,它仍然可以成功执行,但是无法可视化。

可能是什么原因造成的?

更新(2018年6月6日):

有人建议将剧情包装在Plots中。从某种意义上说,该图现在已经出现,尽管它在一个新窗口中出现了-这不是我想要的,而是将图保留在RStudio IDE中。

2 个答案:

答案 0 :(得分:0)

错误似乎出在R / RStudio而不是我的代码中。

在不同论坛上进行了探索之后,我尝试重新安装R(我的版本为3.5.0),并且对我有用。

我只是下载了最新版本(无论如何我已经拥有/拥有),然后关闭了RStudio并安装了R(没有删除我以前的/当前版本)。

然后我重新启动了RStudio,它对我有用。绘图现在显示在RStudio的Plots窗格中。

答案 1 :(得分:0)

我有同样的问题。事实证明,我有一些设备正在默默地进行绘制。

dev.list()

将列出未完成的事情。我有pdf 8 pdf 9

dev.off(8)
dev.off(9)

关闭了这些设备

dev.list()

然后说null device 1,然后我的绘图开始重新出现在视图窗格中。