【问题标题】:Set certain values of grouped variable in Highcharter bar plot to be deselected by default将 Highcharter 条形图中分组变量的某些值设置为默认取消选择
【发布时间】:2020-08-04 00:55:14
【问题描述】:

我希望默认取消选择堆叠的 Highcharter 条形图中的分组变量的某些值。我知道使用hc_add_series 可以设置visible = FALSE,但我不会以这种方式生成图表。

这是一个示例数据集:

responses <- c('Pro','Against','Neutral','Resigned/Accepting','Not Specified')
constituents <- c('dual degree','law only','undergrad only','friend','parent only')
indiv <- rep(1:50)
Name.Change <- sample(responses,50,replace = TRUE)
constituent.type <- sample(constituents,50,replace = TRUE)

demo <- as.data.frame(cbind(indiv,Name.Change,constituent.type))

这是图表

demo %>% 
  group_by(constituent.type,Name.Change) %>%
  summarise(count = n()) %>%
  hchart(type = "bar",
         hcaes(y = count,
               x = constituent.type,
               group = Name.Change)) %>%
  hc_plotOptions(bar = list(stacking = "percent")) %>%
  hc_tooltip(shared = TRUE)

生成的图表选择了Name.Change 的所有值,并且可以根据需要取消选择每个值。但是,我希望默认取消选择某些值(例如“中性”和“未指定”),以便在呈现图表后,您必须单击图例中的该值才能使其显示在图表上.

【问题讨论】:

    标签: javascript r highcharts bar-chart r-highcharter


    【解决方案1】:

    我认为最好用chart.events.load来做,然后你可以为此编写自己的自定义JS函数: https://api.highcharts.com/highcharts/chart.events.load

    在这里你可以看到如何做到这一点:

    responses <- c('Pro','Against','Neutral','Resigned/Accepting','Not Specified')
    constituents <- c('dual degree','law only','undergrad only','friend','parent only')
    indiv <- rep(1:50)
    Name.Change <- sample(responses,50,replace = TRUE)
    constituent.type <- sample(constituents,50,replace = TRUE)
    demo <- as.data.frame(cbind(indiv,Name.Change,constituent.type))
    demo %>% 
      group_by(constituent.type,Name.Change) %>%
      summarise(count = n()) %>%
      hchart(type = "bar",
             hcaes(y = count,
                   x = constituent.type,
                   group = Name.Change)) %>%
      hc_chart(events = list(load = JS("function() {
      var chart = this;
      chart.series[1].setVisible(false)
      chart.series[2].setVisible(false)
      }"))) %>%
      hc_plotOptions(bar = list(stacking = "percent")) %>%
      hc_tooltip(shared = TRUE)
    

    【讨论】:

    • 感谢您的完美运行,尽管我不得不对chart.series[] 上的索引进行反复试验,因为它与我的有序因子变量或图例顺序不对应。没什么大不了的,我只是想知道 chart.series 如何根据group = 输入进行索引。
    • 不深入研究 R 代码,这取决于配置和提供数据的方式/顺序。 Highcharts 只是简单地索引连续的点,在 JS 中将它们组成一个数组,所以你必须选择正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2021-06-28
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多