highcharts Highcharter -预先选择一个或多个分组元素

slmsl1lt  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(149)

我正在使用highcharter生成一组图表。我有每个都有变量的项目,以及按变量列出的销售单位。我正在寻找一种方法,通过该方法可以选择哪些变量是预先选定的,以显示在图表上。
下面是我制作的图表的一个例子:

library(tidyverse)
library(highcharter)
library(viridis)

df <- tibble(item_name = c('beer','beer','soft drink','soft_drink'),
             units = c(15,50,25,10),
             variant_name = c('blonde','white','coke','lemonade'))

cols = as.vector(scales::viridis_pal(option = "turbo", direction = 1)(length(unique(df$variant_name))))

df %>%
  group_by(item_name) %>%
  arrange(desc(units)) %>%
  ungroup() %>%
  hchart(
    "column", hcaes(x = item_name, y = units, group = variant_name),
    stacking = "normal"
  ) %>%
  hc_colors(c(cols))

我希望能够预先选择,比如说'blonde'和'coke'。其他变体必须通过点击图表中的变体名称来选择:

到目前为止,我还没有找到这样做的方法,highcharts的文档只指出当您有多个系列时这样做。

6ojccjat

6ojccjat1#

您可以编写自己的JS函数来加载元素。在您可以指定chart.series.load的地方,检查link以获取额外的信息。下面是一个可重现的示例:

library(tidyverse)
library(highcharter)
library(viridis)

df <- tibble(item_name = c('beer','beer','soft drink','soft_drink'),
             units = c(15,50,25,10),
             variant_name = c('blonde','white','coke','lemonade'))

cols = as.vector(scales::viridis_pal(option = "turbo", direction = 1)(length(unique(df$variant_name))))

df %>%
  group_by(item_name) %>%
  arrange(desc(units)) %>%
  ungroup() %>%
  hchart(
    "column", hcaes(x = item_name, y = units, group = variant_name),
    stacking = "normal"
  ) %>%
  hc_chart(events = list(load = JS("function() {
  var chart = this;
  chart.series[1].setVisible(true)
  chart.series[2].setVisible(false)
  chart.series[3].setVisible(false)
  chart.series[4].setVisible(false)
  }"))) %>%
  hc_colors(c(cols))

输出量:

相关问题