Вы можете использовать событие 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