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

如何用ggplot2基于多列数据绘制多水平箱线图?

解决多列数据绘制多水平箱线图的问题

你遇到的问题根源是当前数据为宽格式,而ggplot绘制多分组箱线图需要长格式数据。以下是具体解决步骤:

1. 加载必要工具包

需要用到tidyverse(包含数据转换的tidyr和绘图的ggplot2):

library(tidyverse)

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

把原数据中多个任务列合并为任务名称列,同时保留年龄和完成状态信息:

example_long <- example %>%
  pivot_longer(
    cols = -Age,  # 排除Age列,转换其余所有任务列
    names_to = "Task",  # 新列名:任务名称
    values_to = "Completed"  # 新列名:是否完成任务
  ) %>%
  filter(Completed == "yes")  # 仅保留完成任务的记录

3. 绘制水平箱线图

用转换后的长格式数据绘图,x轴对应年龄,y轴对应任务名称:

ggplot(example_long, aes(x = Age, y = Task)) +
  geom_boxplot() +
  labs(
    x = "年龄",
    y = "任务",
    title = "儿童完成各项任务的年龄分布"
  ) +
  theme_minimal()

关键说明

  • 原代码中直接用c(...)指定y轴是错误的,ggplot要求y轴是数据框中的单个列变量,长格式转换后生成的Task列正好满足这个要求。
  • 过滤Completed == "yes"是为了只统计完成对应任务的儿童年龄分布,和你想要展示的需求匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:10:36