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

如何使用ggplot2绘制每个对应单个变量的多组箱线图

实现方案

1. 数据格式转换

ggplot2要求输入长格式数据(每一行对应一条观测记录),你当前使用的宽格式数据(每列对应一个日期的所有观测值)需要先做长宽转换,推荐使用tidyverse套件完成,也可以用基础R函数实现。

首先构造你的示例数据集:

df <- data.frame(
  `01/02/2013` = c(1,2,3,4),
  `02/02/2013` = c(2,1,3,1),
  `03/02/2013` = c(3,6,4,1),
  `04/02/2013` = c(3,7,2,8),
  check.names = FALSE
)

使用tidyverse做长宽转换:

library(tidyverse)

df_long <- df %>% 
  pivot_longer(
    cols = everything(),
    names_to = "date",
    values_to = "value"
  )

如果不想安装第三方包,也可以用基础R实现转换:

df_long <- reshape(df, 
                   direction = "long",
                   varying = list(names(df)),
                   v.names = "value",
                   timevar = "date",
                   times = names(df))

2. 绘制带抖动点的箱线图

转换完成后直接调用ggplot2绘图即可,代码如下:

library(ggplot2)

ggplot(df_long, aes(x = date, y = value)) +
  # 绘制箱线图,隐藏默认异常点避免和抖动点重复
  geom_boxplot(fill = "lightgray", outlier.shape = NA) +
  # 添加抖动点,调整横向抖动幅度、大小和透明度
  geom_jitter(width = 0.2, size = 2, alpha = 0.7, color = "steelblue") +
  labs(x = "日期", y = "观测值") +
  theme_bw()

你可以根据自己的需求调整箱线图填充色、抖动点颜色、主题样式等参数,即可得到目标效果的图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02