不使用 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 堆叠列分组的主要内容,如果未能解决你的问题,请参考以下文章