不使用 hchart() 的 Highcharter 堆叠列分组

Posted

技术标签:

【中文标题】不使用 hchart() 的 Highcharter 堆叠列分组【英文标题】:Highcharter stacked column groupings not using hchart() 【发布时间】:2018-03-22 04:04:30 【问题描述】:

我正在尝试使用 Highcharter 创建带有分组的堆叠条形图,并且需要在不使用 hchart() 函数的情况下创建它。我有以下代码(hchart() 部分有效)。

data <- data.frame(
  building = c("Building A", "Building A", "Building B", "Building B"),
  type = c("Rent", "Owned"),
  measure = c(100, 35, 124, 150),
  measure_target = c(95, 20, 122, 145)
)

# This works
hchart(data, "column", hcaes(x = "building", y = "measure", group = "type")) %>%
  hc_plotOptions(column = list(stacking = "normal"))

# How do we go from the above, to something like this?
highchart() %>%
  hc_xAxis(categories = data$building) %>%
  hc_add_series(type = "column", data = data$measure) %>%
  hc_plotOptions(column = list(stacking = "normal"))

预期输出如下。这样做的最终目标是添加堆叠的条形图,然后使用另一个 hc_add_series 在measure_target 列中添加一系列点(因此比较实际值与目标值)。

我需要类似的东西:

除了两个堆叠的条和一条用于目标的线,类似于:

【问题讨论】:

【参考方案1】:

这样的?

library(highcharter)
library(dplyr)

data <- data.frame(
  building = c("Building A", "Building A", "Building B", "Building B"),
  type = c("Rent", "Owned"),
  measure = c(100, 35, 124, 150),
  measure_target = c(95, 20, 122, 145)
)

data_lst <- data %>% 
  group_by(type) %>% 
  do(data = list_parse2(.[, c('building', 'measure')])) %>% 
  rename(name = type) %>% 
  mutate(type = 'column') %>% 
  list_parse()


data_lst2 <- data %>% 
  group_by(type) %>% 
  do(data = list_parse2(.[, c('building', 'measure_target')])) %>% 
  rename(name = type) %>% 
  mutate(type = 'scatter') %>% 
  list_parse()


highchart() %>%
  hc_xAxis(categories = data$building) %>%
  hc_add_series_list(data_lst)%>%
  hc_add_series_list(data_lst2)%>%
  hc_plotOptions(series=list(stacking='normal'))

【讨论】:

关闭。我需要不连接点,我想你可以用分散而不是线来做。但是,我找不到 list.parse3。你用的是什么版本的highcharter?我在 v 0.5.0.9999 我使用的是开发版 @PorkChop 1 年前的开发版本:D,list.parseX 已被 list_parse / list_parse2 取代。 @jbkunst 我家里有一个不同的版本^^,它更老。我已经更新了答案,谢谢 快速评论:在 hc_xAxis 上使用类别会创建错误标记的 xAxis 步骤。它实际上在上面的屏幕截图中得到了证明(请参阅建筑物 A 出现两次,而不是建筑物 A 和建筑物 B)。有什么想法吗?

以上是关于不使用 hchart() 的 Highcharter 堆叠列分组的主要内容,如果未能解决你的问题,请参考以下文章

带有hchart()函数的R Highcharter tickmarkPlacement

如何在highcharter中生成因子为y的散点图?

如何在highcharter中生成一个因子为y的散点图?

DevOps 学习之路

如何根据 y 位置动态更改标记点的颜色

在高图中从左到右移动 x 和 y 轴