【发布时间】:2018-06-26 10:16:50
【问题描述】:
我已经编写了几个连接到服务器并收集一些数据并改变这些数据的函数。其中一项功能还可以将数据可视化。
因为我总是需要运行所有六个函数 - 并且因为我在需要它们时编写它们 - 我决定将它们组合成一个更大的函数(约 400 行,可能下降到大约 350 次清理后不久),而不必一个接一个地独立运行六个独立的函数。
在组合函数之前,生成可视化效果的函数完美地显示在 RStudio 的 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 设置为 FALSE,因为并不总是需要图表。要生成图表,用户在调用函数时指定TRUE 或chart = TRUE 并生成图表(使用if/else);否则,只是浪费处理能力。
我认为进程发生的顺序可能会影响输出,所以我将绘图移到脚本的底部,尽管"Chart printed." 窗格中仍然没有显示它消息显示。
函数作为一个整体执行完美,所需的输出正是我想要的。
在执行阶段任何时候都没有错误,数据帧都符合预期,没有任何错误。
如果我将可视化功能拆分出来,它可以独立工作,没有任何问题。如果我把它放回函数中,它仍然可以成功执行,但没有可视化。
这可能是什么原因造成的?
更新(2018 年 6 月 6 日):
有人建议将情节包装在print 中。这在情节现在出现的意义上起作用了,尽管是在一个新窗口中 - 这不是我想要的,这是为了让情节保留在 RStudio IDE 中。
【问题讨论】: