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

如何用ggplot绘制以intact_fooddepth和hulled_fooddepth为X轴的箱线图

解决步骤

要实现这个箱线图,核心是先把宽格式数据转成长格式——因为ggplot的箱线图要求X轴是一个分类变量,Y轴是对应的数值变量,而你现在的intact_fooddepth和hulled_fooddepth是两列独立的数值,不符合这个结构。group_by在这里不是正确的工具,我们需要用dplyr配套的pivot_longer来重塑数据。

1. 数据重塑(宽转长)

假设你的数据集叫df,执行以下代码把两列合并为分类列和数值列:

library(dplyr)
library(tidyr) # pivot_longer属于tidyr,是tidyverse的一部分

df_long <- df %>%
  pivot_longer(
    cols = c(intact_fooddepth, hulled_fooddepth), # 指定要转换的目标列
    names_to = "food_type", # 新的分类列名(将作为X轴类别)
    values_to = "food_depth" # 新的数值列名(将作为Y轴数据)
  )

2. 用ggplot绘制箱线图

数据转成长期后,就可以直接绘制箱线图了:

library(ggplot2)

ggplot(df_long, aes(x = food_type, y = food_depth)) +
  geom_boxplot(fill = "#69b3a2", color = "black") + # 自定义填充色与边框
  labs(
    x = "食物类型",
    y = "食物深度",
    title = "不同类型食物的深度分布箱线图"
  ) +
  theme_minimal() # 可选:使用简洁的主题风格

补充说明

  • 如果数据里存在NA值,绘制前可以用drop_na(food_depth)过滤无效值:
    df_long <- df %>%
      pivot_longer(cols = c(intact_fooddepth, hulled_fooddepth), names_to = "food_type", values_to = "food_depth") %>%
      drop_na(food_depth)
    
  • pivot_longer是tidyverse处理宽转长的标准函数,比旧版的gather更直观灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:25:23