R Highcharter: другое отображение и значение для выбранной категории

Библиотека, в которую вы входите, была построена с помощью оптимизационных и отладочных символов (скорее всего, -g -O2, который по умолчанию для сборников Linux).

Отладка оптимизированного кода несколько сложна, поскольку поток управления оптимизация заставляет код «прыгать», некоторые переменные становятся «<optimized out>» и т. д.

Вы можете перестроить библиотеку с помощью CXXFLAGS = -g -O0, или вы можете научиться отлаживать при оптимизации.

Последнее очень полезное умение, так как много раз ваша программа будет только сбой в оптимизированном режиме, и вам все равно придется отлаживать его в этом режиме.

0
задан Vlad 18 January 2019 в 07:26
поделиться

1 ответ

Вы можете поместить свою переменную b_alt в первую серию в качестве дополнительной информации:

hc_add_series(name = "c", additionalInfo = a$b_alt, data = a$c) %>%

Тогда вы можете найти эту переменную AdditionalInfo в объекте первой серии здесь :

event.point.series.chart.series[0].options.additionalInfo[event.point.index]

Весь код :

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], b_alt = LETTERS[11:20], c = 11:20, d = 21:30, e = 31:40)

  output$hcontainer <- renderHighchart({      

    canvasClickFunction <- JS("function(event) {Shiny.onInputChange('canvasClicked', [this.name, event.point.series.chart.series[0].options.additionalInfo[event.point.index]]);}")
    legendClickFunction <- JS("function(event) {Shiny.onInputChange('legendClicked', this.name);}")

    highchart() %>% 
      hc_xAxis(categories = a$b) %>% 
      hc_add_series(name = "c", additionalInfo = a$b_alt, data = a$c) %>%
      hc_add_series(name = "d", data = a$d) %>% 
      hc_add_series(name = "e", data = a$e) %>%
      hc_plotOptions(series = list(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) 
0
ответ дан raf18seb 18 January 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: