如何使用R语言highcharter包绘制双Y轴分组条形图
highcharter 双Y轴分组条形图实现方案
基础信息
- 目标:基于
highcharter包绘制双Y轴分组条形图 - 效果参考:

- 测试模拟数据集:
dummy_df <- data.frame(Label = c("A","B", "C"), value1 = c(34,59,12), Value2 = c(397,2678,212))
- 初始仅能实现单Y轴效果的代码:
dummy_df %>% hchart('bar', hcaes(x = 'Label', y = 'value1', group = 'value1'))
可运行完整代码
核心逻辑是拆分两个数据系列、分别绑定左右Y轴、手动调整条体位置避免重叠:
library(highcharter) library(dplyr) library(tidyr) # 构造模拟数据 dummy_df <- data.frame(Label = c("A","B", "C"), value1 = c(34,59,12), Value2 = c(397,2678,212)) # 宽表转长表,拆分数据系列 dummy_long <- dummy_df %>% pivot_longer(cols = -Label, names_to = "metric", values_to = "val") highchart() %>% # 添加第一个系列:绑定左侧Y轴 hc_add_series( data = filter(dummy_long, metric == "value1"), type = "bar", hcaes(x = Label, y = val), name = "value1", yAxis = 0, pointPadding = 0.3, pointPlacement = -0.2 ) %>% # 添加第二个系列:绑定右侧Y轴 hc_add_series( data = filter(dummy_long, metric == "Value2"), type = "bar", hcaes(x = Label, y = val), name = "Value2", yAxis = 1, pointPadding = 0.3, pointPlacement = 0.2 ) %>% # 配置双Y轴 hc_yAxis_multiples( list(title = list(text = "value1"), opposite = FALSE), list(title = list(text = "Value2"), opposite = TRUE) ) %>% hc_xAxis(categories = dummy_df$Label, title = list(text = "分类标签")) %>% hc_plotOptions(bar = list(grouping = FALSE)) %>% hc_legend(enabled = TRUE)
关键配置说明
- 数据转换:将原始宽格式数据转为长格式,方便给两个指标单独配置绘图属性
- 轴绑定:两个条形系列分别通过
yAxis参数绑定对应索引的Y轴,0为左侧轴、1为右侧轴 - 位置调整:通过
pointPlacement参数偏移同分类下两个条形的位置,关闭默认自动分组避免错位,实现并列分组效果 - 轴配置:通过
hc_yAxis_multiples定义两个Y轴的标题、显示位置
内容的提问来源于stack exchange,提问作者wanderzen
相关产品推荐
相关产品推荐

