R zoomChart闪亮

R zoomChart Shiny

我一直在尝试使用 zoomChartshiny 以交互方式放大 chartSeries 的某些部分,但找不到正确的解决方案。我会使用 dateRangeInput 或滑块,但我不确定如何将 quantmod 的 zoomChart-option 与 shiny 连接起来。正如您可能已经假设的那样,我对 shiny 还比较陌生,非常感谢您的建议!

编辑:数据为 xts 格式。

我的代码:

library(quantmod)
library(shiny)

date_range <- as.POSIXct(index(data))
if (interactive()) {
  options(device.ask.default = FALSE)
  ui <- fluidPage(  
    titlePanel("Select Range to zoom-in:"),
    sidebarLayout(
      sidebarPanel(
        dateRangeInput("Range", "Choose Date Range:", min=first(date_range),
                   max=last(date_range), format = "dd-mm-yyyy")
      ),
      mainPanel(
        plotOutput("Plot")
      )
    )
  )

  server <- function(input, output) {
    output$Plot <- renderPlot({
      chartSeries(data, type = c("auto", "candlesticks", "matchsticks",   "bars","line"), 
              theme=chartTheme("white"), name=paste(start(data), end(data),sep = " ")) 
      zoomChart(dateRangeInput) 
    })
  }
   shinyApp(ui, server)
}

其实,你们很亲近。请注意 dateRangeInput() 中的更改:使用开始和结束参数代替最小值、最大值。然后你可以使用 server-side 上的输入来使用 zoom-chart.

library(quantmod)
library(shiny)
getSymbols("YHOO")
data <- YHOO
date_range <- index(data)
if (interactive()) {
  options(device.ask.default = FALSE)
  ui <- fluidPage(  
    titlePanel("Select Range to zoom-in:"),
    sidebarLayout(
      sidebarPanel(
        dateRangeInput("Range", "Choose Date Range:", start=first(date_range),
                       end=last(date_range), format = "yyyy-mm-dd")
      ),
      mainPanel(
        plotOutput("Plot")
      )
    )
  )
  server <- function(input, output) {
    output$Plot <- renderPlot({
      chartSeries(data, type = c("auto", "candlesticks", "matchsticks",   "bars","line"), 
                  theme=chartTheme("white"), name=paste(start(data), end(data),sep = " ")) 
      zoomChart(paste(input$Range, collapse = "::")) 
    })

    observe({
      print(input$Range)
    })
  }
  shinyApp(ui, server)
}

正如@drmariod 所指出的,拥有一个完全可重现的示例是有益的,在这种情况下很容易通过 getSymbols().

获得