如何使用ggplot2绘制两组带分组属性的独立箱线图
问题解决方法
核心原因是你当前使用宽格式数据绘图时,两个箱线图的x轴映射共用了同一个坐标轴维度,导致图层重叠。我们只需要先把宽表转换为ggplot更适配的长表格式,再进行绘图即可实现分离效果。
完整实现代码
library(tidyverse) # 1. 宽表转长表,将male、female整理为分类变量 data_long <- data %>% pivot_longer(cols = c(male, female), names_to = "gender", values_to = "count") # 2. 绘图,x轴映射为gender自动分成两个分组区间,fill映射number实现组内分箱 data_long %>% ggplot(aes(x = gender, y = count, fill = number)) + geom_boxplot(position = position_dodge(preserve = "single"))
参数说明
pivot_longer会把原数据中male和female两列转为名为gender的分类列,对应数值存入count列,如果你原数据中女性列的实际名称是P_3_2,替换cols参数里的female即可position_dodge(preserve = "single")保证不同number分组的箱线宽度统一,不会出现某类别下分组少导致箱线变宽的问题- 如果你需要调整x轴的显示文字,可以加
scale_x_discrete(labels = c("male" = "男性", "female" = "女性"))自定义修改
内容的提问来源于stack exchange,提问作者Frontmaniaac
相关产品推荐
相关产品推荐

