Использовать время в селекторе диапазона графика в R Shiny - PullRequest
1 голос
/ 06 января 2020

Мне нужно создать приложение, в котором ввод времени в формате% T должен изменять временной диапазон, видимый на графике. Я использую Блестящий и Dygraph, и он работает, как указано в документации: можно извлечь dateWindow. Однако изменения в моей системе происходят в более точном масштабе времени, поэтому мне нужно иметь возможность контролировать часы, минуты и секунды в селекторе диапазона. Есть ли способ добиться этого?

Вот пример: вы можете изменить диапазон с помощью селектора диапазона dygraph, и он показывает часы и минуты, но когда я нажимаю кнопку, которая читает окно dygraph_date_window, к реактивному значение, только дата добавляется. Я ищу обходной путь, потому что я хочу иметь возможность обновлять поле ввода времени и (в настоящее время не в коде) обновлять диапазон в графике, используя поле ввода времени.

library(dygraphs)
library(shiny)
library(shinyTime)

data("sample_matrix")
sample_xts<-as.xts(sample_matrix)


ui<-fluidPage(

      dygraphOutput("dygraph"),
      verbatimTextOutput("from"),
      dateInput("start_date","Start date"),
      timeInput("start_time","Start time"),
      actionButton("settime_bttn", "Set time")

)


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


  #1. initialize time constraints
  timelimits<-reactiveValues(start=start(sample_xts),end=end(sample_xts))

  #2. draw dygraph with range selector
  output$dygraph <- renderDygraph({
    dygraph(sample_xts)%>% 
      dyRangeSelector(dateWindow = c(timelimits$start,timelimits$end))

  })

  #3. modify timelimits and input fields with range selector
  observeEvent( input$settime_bttn, {
    rs<-input$dygraph_date_window
    timelimits$start<-rs[[1]]
    timelimits$end<-rs[[2]]
    updateDateInput(session, "start_date", value = substr(rs[[1]],1,10))
    updateTimeInput(session, "start_time", value = rs[[1]])
  })

  output$from <- renderText({
    req(input$dygraph_date_window[[1]])
  })

}

shiny::runApp(list(ui = ui, server = server))
...