R语言 ggplot2包为每组的平均数添加线条

R语言 ggplot2包为每组的平均数添加线条

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

在R语言中,我们可以通过使用group_by()和summaryise()函数来创建一个平均向量来实现。然后,我们可以使用这个平均向量和ggplot2包的geom_hline()函数来创建一条按组别着色的平均点的线。

要从数据框中创建一个平均向量。

语法

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

参数

  • df: 确定要使用的数据框架。
  • **< categorical-variable>: **确定用于将数据分成组的变量。
  • **< quantitative-variable>: **决定了要找到其平均值的变量。

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

语法

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

参数:

  • mean_df: 确定包含平均值信息的数据框。
  • yintercept: 决定数据框架中的变量平均数列。
  • col: 决定用哪一个分类变量来给线条着色。

例子1 :

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

# 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语言中的ggplot2包为每组的平均数添加线条

例2 :

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

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

输出

使用R语言中的ggplot2包为每组的平均数添加线条

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程