You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言highcharter包绘制双Y轴分组条形图

highcharter 双Y轴分组条形图实现方案

基础信息

  • 目标:基于highcharter包绘制双Y轴分组条形图
  • 效果参考:
    双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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:33:28