r - 是否可以在没有闪亮会话的情况下使用 renderPlot 的结果?
问题描述
我创建了一个仪表板,它根据每 8 小时更新一次的数据显示图表。此数据通过 cron-jobbed Python 脚本更新,因此 R/shiny 仅用于绘图/仪表板目的。该图是通过几个reactive
函数创建的,最后是一个renderPlot
. 是否可以在没有闪亮上下文的情况下调用或导入这些反应函数,以便我可以在不运行仪表板的情况下创建绘图?
最终目标是在每次从 Python 更新数据时创建绘图并保存/发送它,而不需要重复的 R 代码。
解决方案
我认为最好的方法是创建一个包。
例如,如果你通过{golem}
框架构建一个应用程序,你可以在应用程序之外使用内部的“业务”功能。
所以这个想法是:
- 构建接受输入并生成绘图的函数
- 在你的渲染图中使用这个函数。
例如 :
在情节.R
my_plot <- function(dataset){
ggplot(dataset, aes(Sepal.Length, Sepal.Width)) +
geom_point()
}
然后您可以在应用程序中重用它:
library(shiny)
ui <- function(request){
plotOutput("plot")
}
server <- function(input, output, session){
r <- reactiveValues()
observe({
r$data <- iris
})
output$plot <- renderPlot({
my_plot(r$data)
})
}
shinyApp(ui, server)
这里的想法是,如果您将所有内容构建为一个包(例如名为“ {myapp}
”,您将能够在myapp::my_plot()
闪亮的上下文之外访问。
因此,在启动 cron 时,您可以添加类似R -e 'myapp::my_plot(dataset)'
.
推荐阅读
- python - 对一组蛋白质序列执行功能,希望我的输出还包括字典中的序列名称
- swift - Swift:UIDatePicker 以编程方式设置为明天
- python - 使用 pandas 将 csv 文件导入 Pycharm 时出现问题
- python - 如何检查数字是否在带有硒的网络元素中
- cryptography - DES-MAC 与 DES-MAC 签名不同吗?
- python - \r 在 Python 中不会删除整行
- python - 检测何时在 wnck python 中打开一个窗口
- java - 我如何在 Java (Android) 中读取 nc /bin/sh 响应
- python - 在 Python 中更改每个活动主机的按钮的背景颜色
- docker - 在 Dockerfile 中创建用户:选项 d 不明确