【问题标题】:Highcharter: Keep the selected Zoom when updating a stock plotHighcharter:更新股票图时保持选定的缩放
【发布时间】:2021-03-23 00:39:00
【问题描述】:

我正在开发一个 Shiny 应用程序,它允许用户使用 selectInput 更新 highcharter 绘图。我希望如果用户选择一个范围按钮(例如 6m),然后使用 selectInput 更改为另一个绘图,它会将缩放按钮保持选择为 6m 而不是恢复它到全部

我阅读了this 答案,它实现了afterSetExtremes() 以更新绘图底部的范围选择器,但我想专门更新顶部的按钮,以便用户可以看到应用了缩放。

下面是一个简单的例子:

library(shiny)
library(highcharter)
library(quantmod)

ui <- fluidPage(sidebarLayout(sidebarPanel(
      selectInput("selector", "Select stock",
          choices = c("GOOG", "AAPL"))
),
mainPanel(highchartOutput("plot"))))

server <- function(input, output, session) {
   output$plot <- renderHighchart({
      data <- getSymbols(input$selector, auto.assign = FALSE)
      highchart(type = 'stock') %>%
          hc_add_series(data)
   })
}

shinyApp(ui, server)

感谢任何指点。

【问题讨论】:

    标签: javascript r highcharts shiny r-highcharter


    【解决方案1】:

    我找到了我的问题的答案。我从这个highchart 论坛(第八个帖子)和它的jsfiddle answer 中获得了这个想法。我从 javascript 中选择的按钮中获取值,然后将其发送回 Shiny 以在绘图更新时使用它。

    我会分享解决方案,以备将来有人需要。

    library(shiny)
    library(highcharter)
    library(quantmod)
    
    ui <- fluidPage(sidebarLayout(sidebarPanel(
      selectInput("selector", "Select stock",
                  choices = c("GOOG", "AAPL"))
    ),
    mainPanel(highchartOutput("plot"))))
    
    server <- function(input, output, session) {
      text_to_val <- list(
        "1m" = 0,
        "3m" = 1,
        "6m" = 2,
        "YTD" = 3,
        "1y" = 4,
        "All" = 5
      )
    
      PRESELECTED_TEXT <- "All"
    
      observeEvent(input$persistanceValue, {
        PRESELECTED_TEXT <<- input$persistanceValue
      })
    
      output$plot <- renderHighchart({
        data <- getSymbols(input$selector, auto.assign = FALSE)
        highchart(type = 'stock') %>%
          hc_add_series(data) %>%
          hc_xAxis(events = list(
            afterSetExtremes = JS(
              "function(e) {
              Shiny.setInputValue('persistanceValue', e.rangeSelectorButton.text);
            }"
            )
          )) %>%
          hc_rangeSelector(selected = text_to_val[[PRESELECTED_TEXT]])
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 2018-03-16
      • 2019-08-26
      • 1970-01-01
      • 2022-06-10
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多