如何在R中绘制展示各组占比的独立组多层环形图
绘制你要的独立组并列环形百分比图
直接用R的ggplot2就能搞定,步骤如下:
1. 先整理数据
得先把数据转成适合画环形图的长格式,还要加载几个常用包:
library(ggplot2) library(dplyr) library(tidyr) # 你的原始数据 data <- data.frame(Specialty = c("Neuro-oncologist", "Neurosurgeon", "Radiation-oncologist"), Percentage = c(44.2, 69.6, 17.2)) # 生成包含"目标百分比"和"剩余比例"的长数据 data_long <- data %>% mutate(Remaining = 100 - Percentage) %>% pivot_longer(cols = c(Percentage, Remaining), names_to = "Type", values_to = "Value") %>% # 固定顺序,确保百分比部分在环形的外侧 mutate(Type = factor(Type, levels = c("Percentage", "Remaining")))
2. 绘制环形图
用极坐标把条形图转成环形,再通过分面让每个专业单独成图:
ggplot(data_long, aes(x = 2, y = Value, fill = Type)) + # 画基础条形,x设为2是为了控制环形的宽度 geom_col(color = "white", size = 0.5) + # 转换为极坐标,让数值对应角度 coord_polar(theta = "y", start = 0) + # 按专业分面,每个专业一个环形 facet_wrap(~Specialty) + # 在环形中心添加百分比文本 geom_text(data = data, aes(x = 1, y = 0, label = paste0(Percentage, "%")), size = 5, fontface = "bold", color = "#222222") + # 隐藏x轴的刻度和标签 scale_x_discrete(breaks = NULL) + # 自定义填充颜色,你可以根据喜好修改 scale_fill_manual(values = c("#2d3436", "#b2bec3")) + # 调整主题,去掉多余元素,让图更简洁 theme_minimal() + theme( legend.position = "none", # 不需要图例,直接看中心文本 axis.text = element_blank(), axis.title = element_blank(), strip.text = element_text(size = 12, face = "bold"), # 专业名称的样式 panel.spacing = unit(2, "lines") # 调整环形之间的间距 )
效果说明
- 每个环形对应一个医学专业,深色部分是你给定的百分比,浅色部分为剩余的比例
- 环形中心直接标注百分比数值,清晰直观
- 分面布局和你提供的示例图结构完全一致,三个独立环形并列展示
内容的提问来源于stack exchange,提问作者ltong
相关产品推荐
相关产品推荐

