R Highcharter: выделите / отмените выделение столбца в гистограмме, нажав - PullRequest
0 голосов
/ 20 января 2019

Можно ли выделить столбец, на который нажали, на гистограмме высокого чартера?Приведенный ниже код фиксирует событие щелчка на панели (код получен из ответа на этот вопрос), вопрос заключается в том, чтобы затем использовать эту информацию о щелчке, чтобы выделить панель, на которую нажали, и затем выделить при нажатии на панельснова или если щелкнуть другую полосу.

Один из способов выделения - использовать полосу (см. здесь ), однако я гибок, если пользователь может четко видеть их выбор.

library("shiny")
library("highcharter")

ui <- shinyUI(
  fluidPage(
    column(width = 8, highchartOutput("hcontainer", height = "500px")),
    column(width = 4, textOutput("text"))
  )
)

server <- function(input, output) {      

  a <- data.frame(b = LETTERS[1:10], c = 11:20, d = 21:30, e = 31:40)

  output$hcontainer <- renderHighchart({      

    canvasClickFunction <- JS("function(event) {Shiny.onInputChange('canvasClicked', [this.name, event.point.category]);}")
    legendClickFunction <- JS("function(event) {Shiny.onInputChange('legendClicked', this.name);}")

    highchart() %>% 
      hc_xAxis(categories = a$b) %>% 
      hc_add_series(name = "c", data = a$c) %>%
      hc_add_series(name = "d", data = a$d) %>% 
      hc_add_series(name = "e", data = a$e) %>%
      hc_plotOptions(series = list(stacking = FALSE, events = list(click = canvasClickFunction, legendItemClick = legendClickFunction))) %>%
      hc_chart(type = "column")

  })      

  makeReactiveBinding("outputText")

  observeEvent(input$canvasClicked, {
    outputText <<- paste0("You clicked on series ", input$canvasClicked[1], " and the bar you clicked was from category ", input$canvasClicked[2], ".") 
  })

  observeEvent(input$legendClicked, {
    outputText <<- paste0("You clicked into the legend and selected series ", input$legendClicked, ".")
  })

  output$text <- renderText({
    outputText      
  })
}

shinyApp(ui, server) 

1 Ответ

0 голосов
/ 21 января 2019

Вы ищете plotOptions.column.allowPointSelect свойство: API - allowPointSelect

Просто обновите строку 25 в своем коде:

hc_plotOptions(series = list(stacking = FALSE, allowPointSelect = TRUE, events = list(click = canvasClickFunction, legendItemClick = legendClickFunction))) %>%

Чтобы выбрать более 1 точки, удерживайте нажатой кнопку ctrl .

...