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

如何在ggplot2中使用内置trees数据集绘制类似base R的箱线图

在ggplot2中实现与base R boxplot(trees) 相同的箱线图效果

base R的boxplot(trees)会自动对数据集中的所有数值列(Girth、Height、Volume)分别绘制箱线图并排展示,但ggplot2默认要求数据为长格式(tidy data),直接用宽格式数据设置aes(x, y)只会得到单个变量组合的箱线图,解决方法如下:

步骤1:转换数据格式

使用tidyr包的pivot_longer()函数将宽格式的trees数据集转换为长格式,把所有数值列合并为两列:一列存储变量名,一列存储对应数值。

步骤2:绘制箱线图

基于转换后的长格式数据,用ggplot()指定x为变量名、y为数值,再添加geom_boxplot()即可实现目标效果。

完整代码示例

# 加载所需包
library(ggplot2)
library(tidyr)

# 将宽格式数据转换为长格式
trees_long <- pivot_longer(
  data = trees,
  cols = everything(),  # 选中所有列
  names_to = "Variable",  # 存储原列名的新列名
  values_to = "Value"     # 存储原数值的新列名
)

# 绘制箱线图
ggplot(trees_long, aes(x = Variable, y = Value)) +
  geom_boxplot(fill = "#69b3a2") +  # 自定义箱线图填充色
  labs(
    title = "树木数据箱线图",
    x = "变量",
    y = "测量值"
  ) +
  theme_minimal()  # 可选:使用简洁主题

原理说明

base R的boxplot()函数可以自动识别宽格式中的数值列并分别处理,但ggplot2的设计逻辑是基于tidy data原则——每个变量单独成列、每个观测单独成行。因此必须先将宽格式数据转换为长格式,才能让ggplot2识别出需要分别绘制箱线图的多个变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:11:12