R语言 如何使用ggplot2在boxplot中绘制平均值
在这篇文章中,我们将看到如何使用R编程语言中的ggplot在boxplot中绘制平均值。
R语言中的盒式图是用来总结连续变量的分布的。它也可以用来显示每组的平均值。平均数或中位数也可以通过标注点的方式用boxplot计算出来。
方法1:使用stat_summary方法
R中的ggplot方法是用来使用指定的数据框架做图形可视化的。它被用来实例化一个ggplot对象。可以为绘图对象创建美学映射,以分别确定x轴和y轴之间的关系。可以向创建的ggplot对象添加其他组件。
语法: ggplot(data = NULL, mapping = aes(), fill = )
参数 :
- data – 用于绘图的默认数据集。
- mapping – 用于绘图的审美贴图列表。
地形图可以用各种方法添加到绘图中。R中的geom_boxplot()方法可以用来在绘制的图中添加箱形图。它被作为一个组件添加到现有的绘图中。美学映射也可以包含颜色属性,根据不同的数据框架以不同的方式分配。
geom_boxplot(alpha = )
stat_summary()方法可用于在箱形图中添加平均点。它被用来向所做的图中添加成分。这个方法在绘制数据之前保存了对平均数的计算。
语法: tat_summary(fun=mean, geom=)
参数:
- geom – 用来显示数据的几何对象
- position – 该层上的重叠点要使用的位置调整
例子
# Library
library(ggplot2)
# defining the columns of the data frame
data_frame <- data.frame(col1=c(rep("A", 10) ,
rep("B", 12) ,
rep("C", 18)),
col2=c( sample(2:5, 10 ,
replace=T) ,
sample(4:10, 12 ,
replace=T),
sample(1:7, 18 ,
replace=T))
)
# plotting the data frame
graph <- ggplot(data_frame,
aes(x=col1, y=col2, fill=col1)) +
geom_boxplot(alpha=0.7) +
stat_summary(fun=mean, geom="point",
shape=20, color="blue",
fill="blue")
# constructing the graph
print(graph)
输出
方法2:使用 聚合方法
基础R中的aggregate()方法是用来将数据分成子集的。它还可以用来计算每个计算的子集的汇总统计,然后以分组的形式返回结果。
语法: aggregate(x, by, FUN)
参数 :
- x – 一个列表或数据框
- by – 要分组的数据框架的列的列表
- FUN – 应用于x的函数
R中的boxplot方法被用来生成指定分组数值的盒须图。R语言中的boxplot方法有以下语法。
语法: boxplot( 公式)
参数 :
- formula – 公式,如y ~ grp,其中y是一个数据值的数字向量。
可以进一步定制boxplot,以便在图上添加点和文本。
语法: points (x , y , col, pch)
参数 :
- x ,y – 要标记的点的坐标
- col – 绘制这些点的颜色
# defining the columns of the data frame
data_frame <- data.frame(col1=c(rep("A", 10) ,
rep("B", 12) ,
rep("C", 18)),
col2=c( sample(2:5, 10 ,
replace=T) ,
sample(4:10, 12 ,
replace=T),
sample(1:7, 18 ,
replace=T))
df_col1 <- list(data_framecol1)
# computing the mean data frame
data_mod <- aggregate(data_framecol2,
df_col1,
mean)
# plotting the boxplot
boxplot(data_framecol2 ~ data_framecol1)
# calculating rows of data_mod
row <- nrow(data_mod)
# marking the points of the box plot
points(x = 1:row,
y = data_modx,
col = "red",
pch = 14
)
# adding text to the plot
text(x = 1:row,
y = data_modx - 0.15,
labels = paste("Mean - ", round(data_mod$x,2)),
col = "dark green")
输出