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

如何在R中创建带多分组的环形堆叠条形图

环形堆叠条形图问题解决方案

需求回顾

  • 按group列分为3类
  • 每类按carbon_chain(碳链长度)分组
  • 每组内按Functional Group堆叠,以计数百分比展示

问题修正方案

针对环形图中百分比标签位置偏移、group标签需移至内圈的问题,以下是修正后的完整代码及关键说明:

1. 数据预处理(含百分比计算与标签位置校准)

library(tidyverse)

# 示例数据(可替换为你的实际数据)
set.seed(123)
df <- tibble(
  group = rep(c("Group A", "Group B", "Group C"), each = 20),
  carbon_chain = rep(c("C2", "C3", "C4", "C5"), 15),
  `Functional Group` = sample(c("Alcohol", "Acid", "Ester", "Ketone"), 60, replace = TRUE)
)

# 汇总计数并计算百分比,同时校准标签位置
df_summary <- df %>%
  group_by(group, carbon_chain, `Functional Group`) %>%
  summarise(count = n(), .groups = "drop") %>%
  group_by(group, carbon_chain) %>%
  mutate(
    percent = count / sum(count) * 100,
    # 计算每个堆叠块的中心位置,解决标签偏移问题
    y_pos = cumsum(percent) - 0.5 * percent
  )

2. 环形堆叠条形图绘制(含内圈group标签设置)

ggplot(df_summary, aes(x = carbon_chain, y = percent, fill = `Functional Group`)) +
  # 绘制堆叠条形
  geom_col(position = "stack", color = "white", linewidth = 0.3) +
  # 添加校准后的百分比标签
  geom_text(aes(label = sprintf("%.1f%%", percent), y = y_pos), 
            size = 3, color = "black") +
  # 按group分面,对应环形的3个分类
  facet_wrap(~group) +
  # 转为环形坐标
  coord_polar("y") +
  # 主题调整:将group标签移至内圈,清理冗余元素
  theme_minimal() +
  theme(
    # 设置group分面标签为内圈标题
    strip.text = element_text(size = 12, face = "bold", color = "#333333"),
    strip.background = element_blank(),
    # 隐藏y轴刻度与标签,保留碳链长度的x轴标签
    axis.text.y = element_blank(),
    axis.text.x = element_text(size = 10),
    axis.title = element_blank(),
    # 隐藏网格线,突出环形结构
    panel.grid = element_blank(),
    # 图例移至底部
    legend.position = "bottom",
    legend.title = element_text(face = "bold")
  ) +
  labs(fill = "Functional Group")

关键修改说明

  • 标签位置修正:通过计算y_pos(堆叠块的中心纵坐标),替代默认的position_stack(vjust=0.5),确保百分比标签精准落在每个堆叠块的正中间,避免环形转换后的位置偏移。
  • 内圈group标签设置:利用facet_wrap的分面标签作为内圈的group标识,通过主题设置隐藏不必要的坐标轴元素,让分面标签自然呈现于环形内圈,同时调整字体样式增强辨识度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:25:09