如何使用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
相关产品推荐
相关产品推荐

