如何使用 R 中的 ggplot2 在箱线图中绘制均值?


当我们创建一个箱形图时,它会显示最小值、最大值、第一四分位数、中位数和第三四分位数,但我们可能还想要绘制均值,以便还可以根据均值来比较因子水平。要创建这种类型的绘图,我们首先需要找到组均值,然后可以用 ggplot2 的 geom_text 函数使用该均值。

示例

考虑 basic R 中的 CO2 数据 -

> head(CO2,20)
Plant Type Treatment conc uptake
1 Qn1 Quebec nonchilled 95 16.0
2 Qn1 Quebec nonchilled 175 30.4
3 Qn1 Quebec nonchilled 250 34.8
4 Qn1 Quebec nonchilled 350 37.2
5 Qn1 Quebec nonchilled 500 35.3
6 Qn1 Quebec nonchilled 675 39.2
7 Qn1 Quebec nonchilled 1000 39.7
8 Qn2 Quebec nonchilled 95 13.6
9 Qn2 Quebec nonchilled 175 27.3
10 Qn2 Quebec nonchilled 250 37.1
11 Qn2 Quebec nonchilled 350 41.8
12 Qn2 Quebec nonchilled 500 40.6
13 Qn2 Quebec nonchilled 675 41.4
14 Qn2 Quebec nonchilled 1000 44.3
15 Qn3 Quebec nonchilled 95 16.2
16 Qn3 Quebec nonchilled 175 32.4
17 Qn3 Quebec nonchilled 250 40.3
18 Qn3 Quebec nonchilled 350 42.1
19 Qn3 Quebec nonchilled 500 42.9
20 Qn3 Quebec nonchilled 675 43.9
> means <- aggregate(uptake ~ Treatment, CO2, mean)
> means
Treatment uptake
1 nonchilled 30.64286
2 chilled 23.78333

使用 Treatment 创建带均值的箱线图 -

> library(ggplot2)
> ggplot(CO2,aes(Treatment,uptake))+geom_boxplot()+
+ stat_summary(fun.y=mean,geom="point")+
+ geom_text(data=means,aes(label=uptake))

输出

使用 Type 创建带均值的箱线图 -

> means <- aggregate(uptake ~ Type, CO2, mean)
> ggplot(CO2,aes(Type,uptake))+geom_boxplot()+
+ stat_summary(fun.y=mean,geom="point")+
+ geom_text(data=means,aes(label=uptake))

输出

更新于: 12-Aug-2020

417 浏览

开启您的事业

完成课程获得认证

开始学习
广告