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

如何在R语言中于同一画布绘制多组土壤湿度箱线图?

嘿,我来帮你搞定这个箱线图绘制的问题!你的数据集结构很典型,只需要先把宽格式数据转成长格式,再用ggplot2(比基础R的boxplot()更灵活好用)就能轻松画出想要的可视化结果啦。下面是一步步的操作指南:

1. 导入你的CSV数据

首先用read.csv()读取你的数据,记得把类别列保留为字符型(避免自动转成因子,新版本R默认已经是这样,但还是提一下更稳妥):

# 替换成你的CSV文件路径
soil_data <- read.csv("你的土壤湿度数据.csv", stringsAsFactors = FALSE)

2. 将宽格式数据转换为长格式

你的原始数据是宽格式(每个日期占一列),而可视化工具更适合长格式(一列存日期、一列存湿度值、一列存站点类别)。用tidyr包的pivot_longer()就能快速转换:

# 如果没装tidyr,先运行:install.packages("tidyr")
library(tidyr)

long_data <- pivot_longer(
  data = soil_data,
  cols = -站点类别,  # 除了"站点类别"列,其他列都要转换
  names_to = "测量日期",  # 生成的日期列的名称
  values_to = "土壤湿度"   # 生成的湿度值列的名称
)

3. 绘制箱线图(两种常用方案)

方案一:同日期下不同类别并排展示

这个方案能直观对比同一日期里,A/C/M/P四类站点的湿度差异:

# 如果没装ggplot2,先运行:install.packages("ggplot2")
library(ggplot2)

ggplot(long_data, aes(x = 测量日期, y = 土壤湿度, fill = 站点类别)) +
  geom_boxplot(position = position_dodge(width = 0.8)) +  # 让同日期的箱线图并排不重叠
  scale_fill_brewer(palette = "Set2") +  # 用好看的配色方案(可选)
  labs(
    title = "不同站点类别在各日期的土壤湿度分布",
    x = "测量日期",
    y = "土壤湿度",
    fill = "站点类别"
  ) +
  theme_minimal()

方案二:每个类别单独一个子图

如果想更清晰地看每个类别随日期的湿度变化,可以用分面展示:

ggplot(long_data, aes(x = 测量日期, y = 土壤湿度)) +
  geom_boxplot(fill = "#69b3a2") +
  facet_wrap(~站点类别) +  # 按站点类别分成4个子图
  labs(
    title = "各站点类别土壤湿度随日期的分布",
    x = "测量日期",
    y = "土壤湿度"
  ) +
  theme_minimal()

小技巧:调整日期顺序

默认情况下,x轴的日期会按字母排序(比如feb2018会排在febr2017前面),你可以手动指定日期的顺序:

long_data$测量日期 <- factor(
  long_data$测量日期,
  levels = c("febr2017", "mar2017", "jun2017", "sep2017", "feb2018")
)

再重新绘图,日期就会按时间先后排列啦!

如果你非要用基础R的boxplot()

虽然ggplot2更灵活,但用基础R也能实现,只需要基于转换后的长格式数据:

boxplot(土壤湿度 ~ 站点类别 * 测量日期, data = long_data,
        main = "土壤湿度分布",
        xlab = "站点类别-测量日期",
        ylab = "土壤湿度")

不过这种方式的可读性不如ggplot2,所以更推荐前面的ggplot2方案哦。

内容的提问来源于stack exchange,提问作者María Paz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:32:59