显示GGplots的最佳(或好)方式

时间:2017-09-05 12:30:46

标签: r linux cron raspberry-pi

我在R中创建了一个仪表板。从6周前开始,我对R一无所知/很少,但上周我能够完成我的版本1.现在的问题是如何在Raspberry Pi上呈现这一点。

我希望R Script每15分钟运行一次以进行更新。我看待它的方式有两种。 我可以从一个cron作业运行R脚本,但除非我从本机R环境运行R脚本,否则它不会在屏幕上显示GGPlot。

其次,我可以从cron作业运行R脚本,输出到pdf,然后运行cron作业来显示pdf。 Xpdf工作正常,但这意味着每次迭代都需要终止最后一次迭代,然后重新运行Xpdf再次打开文件。

第二种选择是一种解决方法,但不是很漂亮。我已经将所有代码都放在了这个阶段,但我很感激任何人都可以参考哪条路线。

1 个答案:

答案 0 :(得分:1)

鉴于您使用Shiny构建仪表板,您可以使用invalidateLater()。查看它的默认脚本:

if (interactive()) {
  ui <- fluidPage(
    sliderInput("n", "Number of observations", 2, 1000, 500),
    plotOutput("plot")
  )

  server <- function(input, output, session) {

    observe({
      # Re-execute this reactive expression after 1000 milliseconds
      invalidateLater(1000, session)

      # Do something each time this is invalidated.
      # The isolate() makes this observer _not_ get invalidated and re-executed
      # when input$n changes.
      print(paste("The value of input$n is", isolate(input$n)))
    })

    # Generate a new histogram at timed intervals, but not when
    # input$n changes.
    output$plot <- renderPlot({
      # Re-execute this reactive expression after 2000 milliseconds
      invalidateLater(2000)
      hist(rnorm(isolate(input$n)))
    })
  }

  shinyApp(ui, server)
}

来源:https://shiny.rstudio.com/reference/shiny/latest/invalidateLater.html

invalidateLater()函数的第一个参数的值以毫秒为单位。 15分钟是900000毫秒。

编辑:根据内部命令,确实可以在特定时间间隔内重复脚本,可以通过多种方式完成(link1link2或其他方式{{1}在闪亮的背景下)。以下是其中一个以无限循环形式的改编,每6秒绘制一次ggplot2直方图:

invalidateLater()