用闪亮的观察者保留放大的dygraph

时间:2017-05-08 19:01:40

标签: r shiny dygraphs

假设我有以下应用程序:(最低限度可重复的示例)

library(shiny)
library(dygraphs)
library(xts)
runApp(
  list(
    ui = 
      mainPanel(
        tableOutput(outputId="dataTable")
        ,dygraphOutput("testGraph")
      ),

    server = function(input, output, session) {

      myReact <- reactiveValues(df = data.frame(time_stamp = as.integer(Sys.time()), foo = rnorm(1)))

      readTimestamp <- function() Sys.time()
      readValue <- function(){
        data.frame(time_stamp = as.integer(Sys.time()), foo = rnorm(1))
      }
      data <- reactivePoll(5*1000, session, readTimestamp, readValue)  # Add to data frame every x seconds 

      observe({
        myReact$df <- rbind(data(), isolate(myReact$df))
      })

      output$dataTable <- renderTable({
        head(myReact$df, 10)  
      })

      output$testGraph <- renderDygraph({
        x <- myReact$df
        x.ts <- xts(x = x[,2], order.by = as.POSIXct(x[[1]], origin = "1970-01-01"))
        dygraph(x.ts, main = "This should work")

      })

    })
)

我遇到的问题是:当用户放大并且reactivePoll()执行(在这种情况下,每5秒)从而附加到reactiveValues()时,dygraph重新渲染并缩小。有没有办法保留缩放?

1 个答案:

答案 0 :(得分:1)

向Github上的@jjallaire致敬,帮助我解决这个问题:https://github.com/rstudio/dygraphs/issues/162

基本上,您需要做的就是在dyOptions retainDateWindow添加一个额外的参数,如下所示:

dygraph(x.ts, main = "This should work") %>%
   dyOptions(retainDateWindow = TRUE)