假设我有以下应用程序:(最低限度可重复的示例)
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重新渲染并缩小。有没有办法保留缩放?
答案 0 :(得分:1)
向Github上的@jjallaire致敬,帮助我解决这个问题:https://github.com/rstudio/dygraphs/issues/162
基本上,您需要做的就是在dyOptions
retainDateWindow
添加一个额外的参数,如下所示:
dygraph(x.ts, main = "This should work") %>%
dyOptions(retainDateWindow = TRUE)