我编写了几个连接到服务器并收集一些数据并改变这些数据的函数。其中一项功能还可以可视化数据。
由于我总是需要运行所有六个函数 - 并且因为我在需要时编写了它们 - 我决定将它们组合成一个更大的函数(约 400 行,可能很快就会减少到约 350 行)会更有效经过一番清理后),而不必一个接一个地独立运行六个单独的函数。
在梳理这些函数之前,生成可视化效果的函数运行得非常好,它显示在PlotsRStudio 的窗口中。
由于合并了功能,可视化没有显示出来。
我添加了一行来显示图表是否已成功生成,并且始终如此;但是,我再也看不到输出了。
这是图表的代码:
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")
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,chart设置为,FALSE因为并不总是需要图表。要生成图表,用户在调用函数时指定 或TRUE,chart = TRUE它会生成图表(使用if/else);否则,这只是浪费处理能力。
我认为进程发生的顺序可能会影响输出,因此我将绘图移至脚本底部,Plots尽管显示了消息,但它仍然没有显示在窗格中"Chart printed."。
该函数作为一个整体执行完美,所需的输出正是我想要的。
执行阶段没有任何错误,数据帧也都符合预期,没有任何错误。
如果我将可视化功能分开,它可以独立工作,没有任何问题。如果我将其放回函数中,它仍然可以成功执行,但没有可视化。
可能是什么原因造成的?
更新(2018 年 6 月 6 日):
有人建议将情节包装在print. 从某种意义上说,这已经起作用了,尽管是在新窗口中,但绘图现在出现了 - 这不是我想要的,这是为了让绘图保留在 RStudio IDE 中。
我遇到过同样的问题。事实证明,我有一些设备正在悄悄地获取绘图。
dev.list()
Run Code Online (Sandbox Code Playgroud)
将给出打开的事物的列表。我有pdf 8 pdf 9。
dev.off(8)
dev.off(9)
Run Code Online (Sandbox Code Playgroud)
关闭那些设备
dev.list()
Run Code Online (Sandbox Code Playgroud)
然后说null device 1,然后我的绘图开始出现在视图窗格中。
| 归档时间: |
|
| 查看次数: |
12463 次 |
| 最近记录: |