📜  使用 R 中的 ggplot2 包为每组的平均值添加行

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

使用 R 中的 ggplot2 包为每组的平均值添加行

在本文中,我们将讨论如何在 R 编程语言的散点图中为每组的平均值添加一条线。

在 R 语言中,我们可以通过使用 group_by() 和 summarise()函数创建一个均值向量来做到这一点。然后我们可以使用该均值向量以及 ggplot2 包的 geom_hline()函数,通过组着色的均值点创建一条线。

要从数据框创建平均向量,

句法:

mean <- df %>% 
group_by(  ) %>% 
summarise( mean_val = mean(  )

论据:

  • df:确定要使用的数据框。
  • 确定用于将数据分组的变量。
  • 确定要求均值的变量。

此表达式创建一个包含两列的向量,即 和按类别存储均值的均值。现在,我们将使用这个均值向量和 geom_hline()函数在由分类变量着色的数据的均值/平均值处添加一条水平线。

句法:

plot + geom_hline( mean_df, aes( yintercept, col )

论据

  • mean_df:确定包含均值信息的数据框。
  • yintercept:确定数据框中的变量均值列。
  • col:确定必须为行着色的分类变量。

示例 1:

在此示例中,我们创建了一个由分类变量着色的散点图。然后,我们添加了一条由相同变量着色的线,该线穿过该数据类别的平均值。

R
# load library tidyverse
library(tidyverse)
 
# create dataframe
df <- data.frame(
    group=factor(rep(c("category1", "category2","category3"),
                        each=100)),
    y=round(c(rnorm(100, mean=65, sd=5),
                  rnorm(100, mean=85, sd=5),
                 rnorm(100, mean=105, sd=5))),
    x=rnorm(300))
 
# create mean by group
mean <- df%>% group_by(group)%>%summarise(mean_val=mean(y))
 
# create ggplot scatter plot
# add horizontal line overlay at mean using geom_hline()
ggplot(data = df, aes(x= x, y=y)) +
geom_point(aes(colour = group)) +
geom_hline(data= mean, aes(yintercept = mean_val,col=group))


R
# load library tidyverse
library(tidyverse)
 
# create dataframe
df <- data.frame(
    group=factor(rep(c("category1", "category2","category3"),
                        each=100)),
    y=round(c(rnorm(100, mean=65, sd=5),
                  rnorm(100, mean=55, sd=5),
                 rnorm(100, mean=60, sd=5))),
    x=rnorm(300))
 
# create mean by group
mean <- df%>% group_by(group)%>%summarise(mean_val=mean(y))
 
# create ggplot scatter plot
# add horizontal line overlay at mean using geom_hline()
# divide plot in facet using function facet_grid()
ggplot(data = df, aes(x= x, y=y)) +
geom_point(aes(colour = group)) +
geom_hline(data= mean, aes(yintercept = mean_val,col=group))+
facet_grid(~group)


输出:

示例 2:

在此示例中,我们创建了一个由分类变量着色的散点图。然后,我们添加了一条由相同变量着色的线,该线穿过该数据类别的平均值。我们还添加了一个 facet_grid() 来将此图转换为分面图,以便通过分类变量更好地可视化数据。

R

# load library tidyverse
library(tidyverse)
 
# create dataframe
df <- data.frame(
    group=factor(rep(c("category1", "category2","category3"),
                        each=100)),
    y=round(c(rnorm(100, mean=65, sd=5),
                  rnorm(100, mean=55, sd=5),
                 rnorm(100, mean=60, sd=5))),
    x=rnorm(300))
 
# create mean by group
mean <- df%>% group_by(group)%>%summarise(mean_val=mean(y))
 
# create ggplot scatter plot
# add horizontal line overlay at mean using geom_hline()
# divide plot in facet using function facet_grid()
ggplot(data = df, aes(x= x, y=y)) +
geom_point(aes(colour = group)) +
geom_hline(data= mean, aes(yintercept = mean_val,col=group))+
facet_grid(~group)

输出: