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

如何用R语言的Highcharts绘制嵌套柱形图?

实现Highcharts嵌套柱形图(内层柱嵌套于外层柱)

要让每个年份的两个柱形呈现嵌套效果,核心是通过**自定义系列的pointWidth、pointPlacement和zIndex**来控制柱形的大小、位置和层级,同时需要先明确每个年份中哪个数据对应外层柱(数值大的),哪个对应内层柱(数值小的)。

调整后的完整代码

library(tidyverse)
library(gapminder)
library(highcharter)

# 预处理数据:按年份分组,标记每个国家是外层(GDP更高)还是内层(GDP更低)
gap_data <- gapminder::gapminder %>%
  filter(year >= 1990, country %in% c('Chile','Argentina')) %>%
  group_by(year) %>%
  mutate(
    max_gdp = max(gdpPercap),
    series_type = ifelse(gdpPercap == max_gdp, "outer", "inner")
  ) %>%
  ungroup()

# 创建嵌套柱形图
hchart(gap_data, "column", hcaes(x = year, y = gdpPercap, group = country)) %>%
  # 针对不同系列配置柱形参数
  hc_plotOptions(
    column = list(
      stacking = NULL,
      series = list(
        # 外层柱:宽10,层级低,浅色调
        list(
          pointWidth = 10,
          zIndex = 1,
          color = "#8cb6e7"
        ),
        # 内层柱:宽6,居中对齐,层级高,深色调
        list(
          pointWidth = 6,
          pointPlacement = "center",
          zIndex = 2,
          color = "#3a7bc8"
        )
      )
    )
  ) %>%
  hc_subtitle(text = "") %>%
  hc_legend(enabled = FALSE) %>%
  hc_xAxis(enabled = FALSE, title = FALSE) %>%
  hc_yAxis(enabled = FALSE, title = FALSE, labels = list(enabled = FALSE))

关键参数说明

  • pointWidth:控制柱形宽度,外层柱用更大数值(如10),内层柱用更小数值(如6),形成嵌套的视觉差
  • pointPlacement: "center":让内层柱对齐到外层柱的中心位置,确保完全嵌套在内部
  • zIndex:设置内层柱的层级更高(如2),外层柱层级更低(如1),保证内层柱显示在外层柱上方
  • 数据预处理:通过分组标记每个年份的GDP最大值,确保外层柱对应数值更大的国家,内层对应更小的,让嵌套逻辑更合理

如果需要适配不同年份中国家GDP大小互换的情况,可以进一步优化逻辑,通过hc_add_series逐个添加系列并动态匹配参数。

内容的提问来源于stack exchange,提问作者Laura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:55:22