📌  相关文章
📜  如何在 R 中使用 ggplot2 在箱线图中绘制平均值?

📅  最后修改于: 2022-05-13 01:55:29.507000             🧑  作者: Mango

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

在本文中,我们将了解如何在 R 编程语言中使用 ggplot 在箱线图中绘制均值。

以 R 为底的箱线图用于总结连续变量的分布。它也可以用来显示每组的平均值。也可以使用箱线图通过标记点来计算平均值或中位数。

方法一:使用 stat_summary 方法

R 中的 ggplot 方法用于使用指定的数据框进行图形可视化。它用于实例化 ggplot 对象。可以为绘图对象创建美学映射,以分别确定 x 轴和 y 轴之间的关系。可以将其他组件添加到创建的 ggplot 对象中。

可以使用各种方法将几何图形添加到绘图中。 R 中的 geom_boxplot() 方法可用于在制作的图中添加箱线图。它作为组件添加到现有绘图中。审美映射还可以包含颜色属性,这些属性根据不同的数据帧进行不同的分配。

geom_boxplot(alpha = )

stat_summary() 方法可用于将平均点添加到箱线图中。它用于将组件添加到制作的绘图中。这种方法在绘制数据之前保存了平均值的计算。

例子:

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() 方法用于将数据拆分为子集。它还可以用于计算每个计算的子集的汇总统计数据,然后按表单返回结果。

R 中的箱线图方法用于生成指定分组值集的箱线图。 R 中的 boxplot 方法具有以下语法:

可以进一步自定义箱线图以在图上添加点和文本。

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")

输出: