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

如何在R语言中按列绘制箱线图?

没问题!我来一步步教你在R里用你的天气数据集绘制箱线图,分基础R和ggplot2两种常用方法,覆盖不同的需求场景:

第一步:整理你的数据集

你提供的原始数据格式有点混乱,先把它转换成R能识别的数据框。我先帮你提取并构造了示例数据集(匹配你给出的前15行数据):

# 构造匹配你数据的示例数据集
weather_data <- data.frame(
  year = rep(1961:1962, each = 12)[1:15],
  month = rep(1:12, 2)[1:15],
  t.max = c(6.1, 9.9, 13.1, 13.9, 15.1, 19.8, 19.3, 19.9, 19.7, 14.5, 9.2, 4.9, 7.4, 7.4, 6.4),
  t.min = c(0.5, 3.8, 3.3, 5.8, 5.4, 8.7, 10.3, 10.8, 10.2, 6.6, 2.7, -1.2, 0.5, 1.1, -1.7),
  frost = c(13, 1, 2, 0, 3, 0, 0, 0, 0, 1, 6, 19, 8, 10, 21),
  rain = c(320, 210, 390, 411, 69, 84, 281, 413, 152, 260, 238, 429, 290, 66, 131)
)

如果你的原始数据是存放在CSV文件里,也可以用read.csv("your_file.csv")直接导入。

方法1:用基础R绘制箱线图

基础R的boxplot()函数简单直接,适合快速可视化:

场景1:绘制所有数值列的箱线图

一次性展示t.max、t.min、frost、rain这几个变量的整体分布:

boxplot(weather_data[, c("t.max", "t.min", "frost", "rain")],
        main = "箱线图:天气变量分布",
        ylab = "数值",
        col = "lightblue",
        las = 1) # 让y轴标签横向显示,更易读

场景2:按分类列分组绘制

比如按年份分组看最高气温的分布,或者按月份分组看降雨量的分布:

# 按年份分组绘制最高气温箱线图
boxplot(t.max ~ year, data = weather_data,
        main = "各年份最高气温分布",
        xlab = "年份",
        ylab = "最高气温(°C)",
        col = "lightgreen")

# 按月份分组绘制降雨量箱线图
boxplot(rain ~ month, data = weather_data,
        main = "各月份降雨量分布",
        xlab = "月份",
        ylab = "降雨量",
        col = "lightcoral")

方法2:用ggplot2绘制箱线图

ggplot2能绘制更美观、灵活的可视化,需要先安装并加载包:

# 首次使用先安装包
# install.packages("ggplot2")
# install.packages("tidyr") # 用于数据格式转换
library(ggplot2)
library(tidyr)

场景1:多变量箱线图(长格式数据)

先把宽格式数据转换成长格式,方便同时展示多个变量:

# 转换为长格式数据
weather_long <- pivot_longer(weather_data, 
                             cols = c(t.max, t.min, frost, rain),
                             names_to = "变量名称",
                             values_to = "数值")

# 绘制多变量箱线图
ggplot(weather_long, aes(x = 变量名称, y = 数值)) +
  geom_boxplot(fill = "lightblue", alpha = 0.7) +
  labs(title = "天气变量分布箱线图",
       x = "变量",
       y = "数值") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签避免重叠

场景2:按分类分组的多面箱线图

比如按年份分组,分别展示每个变量的分布:

ggplot(weather_long, aes(x = 变量名称, y = 数值)) +
  geom_boxplot(fill = "lightgreen", alpha = 0.7) +
  facet_wrap(~ year) + # 按年份分面
  labs(title = "各年份天气变量分布",
       x = "变量",
       y = "数值") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

小技巧:处理缺失值

如果你的数据里有NA,可以用na.omit()先清理数据,避免绘图时出错:

# 清理含NA的行
weather_clean <- na.omit(weather_data)
# 用清理后的数据绘图即可

内容的提问来源于stack exchange,提问作者user3742334

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:33:13