R HIGHCHARTER - Как отобразить дополнительные значения ряда при наведении на старшей диаграмме?

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

Вот код:

highchart() %>% 
  hc_chart(type = "bar") %>% 
  hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
  hc_xAxis(categories = suppliers$Supplier[20:24], tickInterval = 1) %>%
    hc_yAxis(tickInterval = 1) %>% hc_add_series(data = suppliers$x[20:24],
            name = "Overall Supplier Score (Weighted)", resp = suppliers$respondents[20:24]) %>% 
hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function()
{return this.series.options.resp;}")) 
%>% hc_exporting(enabled = TRUE) %>% hc_plotOptions(
series = list(
  boderWidth = 0,
  dataLabels = list(enabled = TRUE)
))

Это результат:изображение] (http://imgur.com/a/rgcJm) [!  [Highchart для дополнительных серий

Как видите, данные, появляющиеся при наведении на график, отличаются от оси x или y. Тем не менее, он отображает полные данные для всех 5 баров, а не отображает одно значение для каждого бара.

Я знаю, что мне нужно написать функцию JavaScript, чтобы сопоставить значения с остальной частью фрейма данных, но я не уверен, как это сделать (поскольку, к сожалению, у меня нет большого опыта или знаний в области JS).

Если я использую ряд, используемый на оси x или y, то он работает нормально (используя this.x или this.y), но использование дополнительного ряда, хранящегося в случайной переменной, не работает без this.series.options.seriesname и затем также возвращает всю серию.

РЕДАКТИРОВАТЬ

Вот код для воспроизведения этого примера:

library (highcharter)
library (dplyr)
Suppliers= data.frame(Supplier = c('one','two','three','four','five'),
Value = c(1,2,3,4,5), respondents= c(5,1,4,12,5), 
Category = c('cat1','cat2','cat3','cat4','cat5'))

highchart() %>% 
hc_chart(type = "bar") %>% 
hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
hc_xAxis(categories = Suppliers$Supplier, tickInterval = 1) %>%
hc_yAxis(tickInterval = 1) %>% hc_add_series(data = Suppliers$Value,
        name = "Overall Supplier Score (Weighted)", resp = Suppliers$respondents) %>% 
hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function()
{return this.series.options.resp;}")) 
%>% hc_plotOptions(
series = list(
  boderWidth = 0,
  dataLabels = list(enabled = TRUE)
))

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

1 ответ

Хорошо, я попробовал что-то простое, и, похоже, это сработало. Я просто добавил точки оси x в качестве индекса к серии, которую я называю.

    library (highcharter)
    library (dplyr)
    Suppliers= data.frame(Supplier = c('one','two','three','four','five'),
    Value = c(1,2,3,4,5), respondents= c(5,1,4,12,5), 
    Category = c('cat1','cat2','cat3','cat4','cat5'))

     highchart() %>% 
     hc_chart(type = "bar") %>% 
     hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
     hc_xAxis(categories = Suppliers$Supplier, tickInterval = 1) %>%
     hc_yAxis(tickInterval = 1) %>% hc_add_series(data = Suppliers$Value,
    name = "Overall Supplier Score (Weighted)", resp = Suppliers$respondents) %>% 
     hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function()
      {return this.series.options.resp[this.point.x];}")) 
      %>% hc_plotOptions(
      series = list(
      boderWidth = 0,
      dataLabels = list(enabled = TRUE)
    ))
Другие вопросы по тегам