如何在 R 中使用 ggplot2 在箱线图中绘制平均值?
在本文中,我们将了解如何在 R 编程语言中使用 ggplot 在箱线图中绘制均值。
以 R 为底的箱线图用于总结连续变量的分布。它也可以用来显示每组的平均值。也可以使用箱线图通过标记点来计算平均值或中位数。
方法一:使用 stat_summary 方法
R 中的 ggplot 方法用于使用指定的数据框进行图形可视化。它用于实例化 ggplot 对象。可以为绘图对象创建美学映射,以分别确定 x 轴和 y 轴之间的关系。可以将其他组件添加到创建的 ggplot 对象中。
Syntax: ggplot(data = NULL, mapping = aes(), fill = )
Arguments :
- data – Default dataset to use for plot.
- mapping – List of aesthetic mappings to use for plot.
可以使用各种方法将几何图形添加到绘图中。 R 中的 geom_boxplot() 方法可用于在制作的图中添加箱线图。它作为组件添加到现有绘图中。审美映射还可以包含颜色属性,这些属性根据不同的数据帧进行不同的分配。
geom_boxplot(alpha = )
stat_summary() 方法可用于将平均点添加到箱线图中。它用于将组件添加到制作的绘图中。这种方法在绘制数据之前保存了平均值的计算。
sSyntax: tat_summary(fun=mean, geom=)
Arguments :
- geom – The geometric object to use display the data
- position – The position adjustment to use for overlappling points on this layer
例子:
R
# 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)
R
# 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_frame$col1)
# computing the mean data frame
data_mod <- aggregate(data_frame$col2,
df_col1,
mean)
# plotting the boxplot
boxplot(data_frame$col2 ~ data_frame$col1)
# calculating rows of data_mod
row <- nrow(data_mod)
# maeking the points of the box plot
points(x = 1:row,
y = data_mod$x,
col = "red",
pch = 14
)
# adding text to the plot
text(x = 1:row,
y = data_mod$x - 0.15,
labels = paste("Mean - ", round(data_mod$x,2)),
col = "dark green")
输出
方法二:使用聚合方法
基础 R 中的 Aggregate() 方法用于将数据拆分为子集。它还可以用于计算每个计算的子集的汇总统计数据,然后按表单返回结果。
Syntax: aggregate(x, by, FUN)
Arguments :
- x – A list or data frame
- by – The list of the column of the data frame to group by
- FUN – The function to apply to x
R 中的箱线图方法用于生成指定分组值集的箱线图。 R 中的 boxplot 方法具有以下语法:
Syntax: boxplot( formula)
Arguments :
- formula – formula, such as y ~ grp, where y is a numeric vector of data values
可以进一步自定义箱线图以在图上添加点和文本。
Syntax: points (x , y , col, pch)
Arguments :
- x ,y – The coordinates of the points to mark
- col – The colour to plot the points with
R
# 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_frame$col1)
# computing the mean data frame
data_mod <- aggregate(data_frame$col2,
df_col1,
mean)
# plotting the boxplot
boxplot(data_frame$col2 ~ data_frame$col1)
# calculating rows of data_mod
row <- nrow(data_mod)
# maeking the points of the box plot
points(x = 1:row,
y = data_mod$x,
col = "red",
pch = 14
)
# adding text to the plot
text(x = 1:row,
y = data_mod$x - 0.15,
labels = paste("Mean - ", round(data_mod$x,2)),
col = "dark green")
输出: