在R中基于数据框绘制可分组分离的Raincloud图求助
问题:如何在R语言中绘制分组清晰的Raincloud图
需求说明
- 基于
dat_red数据框绘制Raincloud图 - 主分组为
Risk_Cyto(包含Intermediate、Poor、Good三个类别),每个主分组下再细分FAB亚型(包含M4、M0、M2、M1、M3、M5) - 目标效果:主分组与子分组清晰分离,避免元素堆叠混乱
数据与现有代码背景
- 数据框:
dat_red(已提供dput结构) - 已完成数据读取与预处理步骤
- 现有绘图代码生成的图存在元素堆叠、分组无法区分的问题
解决方案建议
1. 统一设置分组偏移对齐
使用ggplot2结合ggdist绘制Raincloud图时,核心是给所有图层添加一致的position_dodge()参数,让同一主分组下的FAB子分组横向错开,避免重叠。示例代码如下:
library(ggplot2) library(ggdist) # 替换`your_value_column`为实际数值列名 ggplot(dat_red, aes(x = Risk_Cyto, y = your_value_column, fill = FAB, color = FAB)) + # 绘制半小提琴密度图 ggdist::stat_halfeye( position = position_dodge(width = 0.7), adjust = 0.8, width = 0.6, justification = -0.2, point_color = NA ) + # 绘制箱线图 geom_boxplot( width = 0.2, position = position_dodge(width = 0.7), outlier.shape = NA ) + # 绘制散点 ggdist::stat_dots( position = position_dodge(width = 0.7), side = "left", justification = 1.1, binwidth = 0.2 ) + # 美化坐标轴与主题 labs(x = "细胞遗传学风险分组", y = "观测指标") + theme_minimal()
关键参数说明:
position_dodge(width = 0.7):给所有图层设置相同的偏移宽度,确保同一主分组下的子分组对齐且不重叠justification:调整密度图和散点的位置,避免与箱线图堆叠
2. 固定分组展示顺序(可选)
如果需要自定义分组的展示顺序,可将因子列重新指定层级:
# 设定Risk_Cyto的展示顺序 dat_red$Risk_Cyto <- factor(dat_red$Risk_Cyto, levels = c("Good", "Intermediate", "Poor")) # 设定FAB亚型的展示顺序 dat_red$FAB <- factor(dat_red$FAB, levels = c("M0", "M1", "M2", "M3", "M4", "M5"))
3. 优化视觉区分度(可选)
- 使用
scale_fill_brewer(palette = "Set2")或自定义颜色向量,让不同FAB亚型的颜色差异更明显 - 微调
width参数(密度图、箱线图的宽度),避免分组间过度拥挤
内容的提问来源于stack exchange,提问作者PesKchan
相关产品推荐
相关产品推荐

