Как извлечь минимальную и максимальную дату из графика акций Highcharter? - PullRequest
0 голосов
/ 20 июня 2019

Я хочу извлечь максимальную и минимальную даты как выбранные on click использования визуализации на графике "сток" старшего чартера.

Сохраните эти даты в переменной для доступа в другом месте. Как получить доступ к этим датам?

highchart(type = "stock") %>%
hc_add_series(df, hcaes(DateTime, Count),type = "column") %>%
hc_xAxis(type = "datetime",
dateTimeLabelFormats = list(day = '%d of %b'))

Пример данных:

DateTime            Count
  <dttm>              <int>
1 2019-01-01 00:00:00     5
2 2019-01-01 01:00:00     2
3 2019-01-01 02:00:00     1
4 2019-01-01 03:00:00     2
5 2019-01-01 04:00:00     1
6 2019-01-01 05:00:00     1

1 Ответ

2 голосов
/ 20 июня 2019

Не совсем уверен, что вы подразумеваете под мин и макс, дата.Что вы ожидаете после нажатия?

1.Создание события

Создание события JavaScript click, которое получает и сохраняет значение.

click_event <- JS("
  function(event) {
    // Get value of clicked column
    var clickedValue = event.point.name;

    // Store it in input$bar_clicked
    Shiny.onInputChange('bar_clicked', clickedValue);
  }
")

2.Включая событие

И добавьте событие click к вашему объекту Highchart hc_plotOptions(column = list(events = list(click = click_event))).(На основе документации Highcharts API )

После этого вы сможете использовать переменную input$bar_clicked в любом месте Shiny.

Полный код:

library(tibble)
library(highcharter)
library(shiny)

df <- tribble(
  ~DateTime, ~Count,
  "2019-01-01 00:00:00",     5,
  "2019-01-01 01:00:00",     2,
  "2019-01-01 02:00:00",     1,
  "2019-01-01 03:00:00",     2,
  "2019-01-01 04:00:00",     1,
  "2019-01-01 05:00:00",     1
)

click_event <- JS("
  function(event) {
    // Get value of clicked column
    var clickedValue = event.point.name;

    // Store it in input$bar_clicked
    Shiny.onInputChange('bar_clicked', clickedValue);
  }
")

ui <- fluidPage(
  highchartOutput("hc"),
  verbatimTextOutput("txt")
)

server <- function(input, output, session) {
  output$hc <- renderHighchart( {
    highchart(type = "stock") %>%
      hc_add_series(df, hcaes(DateTime, Count),type = "column") %>%
      hc_xAxis(type = "datetime",
               dateTimeLabelFormats = list(day = '%d of %b')) %>% 
      hc_plotOptions(column = list(events = list(click = click_event)))
  })

  # Print the variable
  output$txt <- renderPrint( {
    input$bar_clicked
  })
}

shinyApp(ui, server)

Выход

Output

...