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)
))
Это результат:
Как видите, данные, появляющиеся при наведении на график, отличаются от оси 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)
))