如何用ggplot2绘制按habitat分组、az和iz两列并排的分组箱线图
实现步骤
1. 数据预处理
你给出的原始数据中az、iz两列使用逗号作为小数点分隔符,首先要确保这两列被识别为数值类型:如果是读入数据阶段,可以在read.table/read.csv中添加参数dec = ","自动识别;如果已经读入为字符型,可以用以下代码转换:
library(tidyverse) data <- data %>% mutate(across(c(az, iz), ~as.numeric(sub(",", ".", .x))))
2. 数据集转换为长格式
ggplot2默认适配长格式数据做分组可视化,你需要把az、iz两列合并为一个数值列,新增列区分两个指标类型:
# 宽表转长表 data_long <- data %>% pivot_longer(cols = c(az, iz), names_to = "index_type", values_to = "value") # 保留你之前设定的habitat因子顺序 data_long$habitat <- factor(data_long$habitat, levels = c("We","Gi","Mw","Htr"))
3. 绘制并列分组箱线图
在aes中用颜色/填充映射区分az/iz两类指标,添加position_dodge参数实现同habitat分组下两个箱线图并排展示:
ggplot(data_long, aes(x = habitat, y = value, fill = index_type)) + geom_boxplot(position = position_dodge(width = 0.8)) + # 可根据需求自定义标签 labs(x = "生境类型", y = "数值", fill = "指标类型")
如果需要用边框颜色而非填充色区分两类指标,把代码中所有fill参数替换为colour即可。
内容的提问来源于stack exchange,提问作者geom
相关产品推荐
相关产品推荐

