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

如何在R语言中将堆叠条形图转为环形图?现有脚本仅适配分组图

将堆叠条形图转换为环形图(R语言实现)

你现有的数据集按基因(Gene name)分组,每个基因下包含不同变异类型(Alteration Type)的频率数据(Alteration Frequency),需要把这类堆叠条形图转为环形图,以下是适配的实现方案:

你的数据集

df.bar <- structure(list(`Gene name` = c("Gene1", "Gene1", "Gene1", "Gene1", "Gene2", "Gene2", "Gene2", "Gene2", "Gene3", "Gene3", "Gene3", "Gene3", "Gene4", "Gene4", "Gene4", "Gene4", "Gene5", "Gene5", "Gene5", "Gene5", "Gene6", "Gene6", "Gene6", "Gene6", "Gene7", "Gene7", "Gene7", "Gene7", "Gene8", "Gene8", "Gene8", "Gene8", "Gene9", "Gene9", "Gene9", "Gene9", "Gene10", "Gene10", "Gene10", "Gene10", "Gene11", "Gene11", "Gene11", "Gene11", "Gene12", "Gene12", "Gene12", "Gene12", "Gene13", "Gene13", "Gene13", "Gene13", "Gene14", "Gene14", "Gene14", "Gene14", "Gene15", "Gene15", "Gene15", "Gene15", "Gene16", "Gene16", "Gene16", "Gene16"), `Alteration Frequency` = c(0, 0.090991811, 2.183803458, 0.636942675, 0, 0.181983621, 1.091901729, 0.363967243, 0, 0.454959054, 0.727934486, 0.727934486, 0, 0, 0.363967243, 0.454959054, 0, 0, 1.364877161, 1.000909918, 0, 0.272975432, 1.910828025, 0, 0, 0, 1.000909918, 0.727934486, 0.090991811, 0.454959054, 14.83166515, 0.727934486, 0, 0, 1.18289354, 0.363967243, 0, 0, 0.818926297, 0.363967243, 0, 0, 4.458598726, 1.000909918, 0, 0, 0.636942675, 0.181983621, 0, 0, 0.636942675, 0.181983621, 0.090991811, 0, 9.099181074, 0.363967243, 0, 0.181983621, 0.363967243, 0.272975432, 0, 0.272975432, 0.181983621, 0.363967243), `Alteration Type` = c("Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation", "Multiple Alteration", "Deep deletion", "Amplification", "Point mutation")), class = "data.frame", row.names = c(NA, -64L))

实现步骤

1. 加载所需包

需要ggplot2负责绘图,dplyr处理数据:

library(ggplot2)
library(dplyr)

2. 数据预处理

计算每个基因下各变异类型的累积频率,确保堆叠分段位置正确;同时设置环形内半径参数:

df_processed <- df.bar %>%
  group_by(`Gene name`) %>%
  arrange(`Alteration Type`) %>%
  # 计算累积频率和前一段的累积值,用于堆叠定位
  mutate(cum_freq = cumsum(`Alteration Frequency`),
         prev_freq = lag(cum_freq, default = 0)) %>%
  ungroup()

# 环形内半径,数值越大中间空心区域越大,可自行调整
inner_radius <- 5

3. 绘制环形图

通过极坐标转换将堆叠条形图转为环形,同时优化图表样式:

ggplot(df_processed, aes(x = `Gene name`)) +
  # 绘制堆叠分段,白色边框区分不同变异类型
  geom_col(aes(y = `Alteration Frequency`, fill = `Alteration Type`),
           color = "white", size = 0.2) +
  # 转换为极坐标,顺时针排列环形
  coord_polar(start = 0, direction = -1) +
  # 设置y轴范围,实现空心环形效果
  ylim(-inner_radius, NA) +
  # 在环形内侧添加基因名称标签
  geom_text(aes(y = -inner_radius/2, label = `Gene name`),
            size = 3, color = "black") +
  # 自定义主题,去除冗余元素
  theme_minimal() +
  theme(
    axis.text.y = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    legend.position = "bottom",
    legend.title = element_text(size = 10),
    plot.margin = margin(10, 10, 10, 10)
  ) +
  # 设置变异类型的填充色,可替换为自定义颜色向量
  scale_fill_brewer(palette = "Set3")

关键说明

  • coord_polar()是实现环形转换的核心,direction=-1让环形按顺时针排列
  • ylim(-inner_radius, NA)通过设置负的y轴下限,创造中间空心的环形效果
  • 累积频率计算确保堆叠分段不会错位,保证每个变异类型的位置准确
  • 可调整inner_radius、颜色调色板、标签大小等参数,适配你的可视化需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:01:40