javascript - 高宪章: capture currently selected min and max dates in stock plot

标签 javascript r highcharts shiny r-highcharter

我正在开发一个 Shiny 的应用程序,它使用 highcharter pkg 进行数据可视化。我想同步 2 个 highchart 图,这样当我更改一个图中的日期范围时(使用图底部的范围选择器,而不是范围选择器按钮),第二个图也会应用它们。我阅读了 afterSetExtremes() JS 函数,该函数捕获 here 中建议的最小和最大日期(示例 this SO answer) ,但我不确定如何将此 JS 代码应用到我的 R/Shiny 代码。

下面是两个应该同步的 highchart 图的简单示例

library(shiny)
library(highcharter)


data(fdeaths)
data(mdeaths)


ui <- fluidPage(
  highchartOutput('f_plot'),
  highchartOutput('m_plot')
)


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

  output$f_plot <- renderHighchart(
    highchart(type = 'stock') %>% 
      hc_add_series(fdeaths)

  )

  output$m_plot <- renderHighchart(
    highchart(type = 'stock') %>% 
      hc_add_series(mdeaths) 
  )


}


shinyApp(ui, server)

感谢您的指点。

最佳答案

您可以使用 xAxis.events.afterSetExtremes 事件来触发函数,该函数将在我们每次更改第一个图表的极值时更新第二个图表的极值。当然,您可以调整此逻辑以在拖动第二个图表时更改第一个图表的极值,或者对更多图表执行相同操作。

这是一个如何在纯 JavaScript 中执行此操作的示例:https://jsfiddle.net/BlackLabel/yg50ue1c/

这里有一个 R 实现:

library(shiny)
library(highcharter)


data(fdeaths)
data(mdeaths)


ui <- fluidPage(
  highchartOutput('f_plot'),
  highchartOutput('m_plot')
)


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

  output$f_plot <- renderHighchart(
    highchart(type = 'stock') %>% 
      hc_add_series(fdeaths) %>% 
      hc_xAxis(
        events = list(
          afterSetExtremes = JS("function(e) {
            Highcharts.charts[0].xAxis[0].setExtremes(e.min, e.max);
          }")
        )
      )
    )

  output$m_plot <- renderHighchart(
    highchart(type = 'stock') %>% 
      hc_add_series(mdeaths) %>% 
      hc_xAxis(
        events = list(
          afterSetExtremes = JS("function(e) {
            Highcharts.charts[1].xAxis[0].setExtremes(e.min, e.max);
          }")
        )
      )
  )

}


shinyApp(ui, server)

请注意,Shiny 略有不同并更改了图表的顺序,因此可以在此处找到第二个图表实例:Highcharts.charts[0] 但第一个在这里:Highcharts.charts[1] 我想知道如果我们有更多图表,顺序会是什么......

API 引用:https://api.highcharts.com/highcharts/xAxis.events.afterSetExtremes https://api.highcharts.com/class-reference/Highcharts.Axis#setExtremes

关于javascript - 高宪章: capture currently selected min and max dates in stock plot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55516283/

相关文章:

javascript - 幻灯片显示下面的另一张幻灯片

r - 使用 rm_ Between 函数中的逻辑运算符提取单词之间的字符串

r - r 中重新编码的问题

javascript - 三级下钻 Highcharts

javascript - 在 JQuery 中对多个变量值进行动画处理

javascript - 如何从 javascript 类方法返回一个值?

javascript - 什么会导致闭包中的数组赋值将数组转换为函数数组?

regex - 如何匹配非连续重复n次以上的模式?

javascript - 将字符串解析为 JavaScript(jQuery) 中的数据集以匹配 HighCharts 中的系列

javascript - 如何将 DataTable 识别的对象数组转换为 Highcharts 识别的对象数组?