在闪亮的应用程序中从dygraph提取dyRangeSelector值

Cla*_*nJY 5 r dygraphs shiny

我一直在使用dygraphs库在发光的应用程序中放置一些非常好的时间序列图。我特别喜欢结合使用group参数dygraphdyRangeSelector来同步多个笔形图的缩放级别。

有没有办法使其他闪亮的输出对范围选择器的用户操作起反应?以这个示例应用程序为例,该应用程序显示一个简单的笔形图,并将其汇总在下表中:

# app.R
library(shiny)
library(dygraphs)
library(dplyr)

indoConc <- Indometh[Indometh$Subject == 1, c("time", "conc")]

ui <- fluidPage(
  dygraphOutput("plot"),
  tableOutput("table")
)

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

  output$plot <- renderDygraph({
    indoConc %>%
      dygraph %>%
      dyRangeSelector
  })

  output$table <- renderTable({
    indoConc %>%
      filter(time >= min(indoConc$time), time <= max(indoConc$time)) %>%
      summarise(total_conc = sum(conc))
  })
})

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

我希望该表仅在用户当前选择的时间间隔内求和。这意味着将filter线更改为使用那些最小/最大点以外的值(这将导致不进行过滤)。

如何以适当的格式从范围选择器中提取这两个值,以便可以在该filter调用中使用它们,并在用户移动滑块时使表进行更新?

Por*_*hop 4

由于time中的变量dataframe是 3 位数字变量,我建议您将datetime对象转换为 a character,然后选择所需的最后 3 位数字,并将其粗略为 anumeric以供进一步使用,如下所示:

rm(list = ls())
library(shiny)
library(dygraphs)
library(dplyr)
library(stringr)

indoConc <- Indometh[Indometh$Subject == 1, c("time", "conc")]
takeLastnvalues <- -3
ui <- fluidPage(dygraphOutput("plot"),tableOutput("table"))

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

  values <- reactiveValues()  
  observeEvent(input$plot_date_window,{
    value1 <- input$plot_date_window[[1]]
    value2 <- input$plot_date_window[[2]]
    value1 <- sub("Z", "", value1)
    value2 <- sub("Z", "", value2)
    value1 <- str_sub(value1,takeLastnvalues,-1)
    value2 <- str_sub(value2,takeLastnvalues,-1)
    values$v1 <- as.numeric(value1)
    values$v2 <- as.numeric(value2)
  })

  output$plot <- renderDygraph({
    indoConc %>%
      dygraph %>%
      dyRangeSelector
  })

  output$table <- renderTable({
    indoConc %>%
      filter(time >= min(values$v1), time <= max(values$v2)) %>%
      summarise(total_conc = sum(conc))
  })
})

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述