何时在 ggplot2 图中使用 stat=”identity”
使用ggplot2中的geom_bar()函数创建条形图有两种常见方法:
方法一:使用geom_bar()
ggplot(df, aes(x)) + geom_bar()
默认情况下, geom_bar()将简单地计算变量 x 的每个唯一值的出现次数,并使用条形图显示计数。
方法2:使用geom_bar(stat=”identity”)
ggplot(df, aes(x, y)) +
geom_bar(stat=" identity ")
如果您向geom_bar()提供stat=”identity”参数,那么您就是在告诉 R 计算变量 y 的总和,按变量 x 分组并使用条形图显示总和。
以下示例使用 R 中的以下数据框说明了这两种方法之间的差异,该数据框显示了来自不同球队的篮球运动员的得分:
#create data frame df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 4 ), points=c(3, 5, 5, 6, 5, 7, 7, 8, 9, 9, 9, 8)) #view data frame df team points 1 to 3 2 to 5 3 to 5 4 to 6 5 B 5 6 B 7 7 B 7 8 B 8 9 C 9 10 C 9 11 C 9 12 C 8
示例 1:使用 geom_bar()
以下代码演示如何使用geom_bar()函数创建一个条形图,显示团队列中每个唯一值的计数:
library (ggplot2) #create bar chart to visualize occurrence of each unique value in team column ggplot(df, aes(team)) + geom_bar()
X 轴显示Team列中的唯一值,Y 轴显示每个唯一值出现的次数。
由于每个唯一值出现 4 次,因此图中每个条形的高度为 4。
示例 2:使用 geom_bar(stat=”identity”)
以下代码展示了如何使用带有stat=”identity”参数的geom_bar()函数来创建一个条形图,该条形图显示点列中的值的总和,并按团队分组:
library (ggplot2) #create bar chart to visualize sum of points, grouped by team ggplot(df, aes(team, points)) + geom_bar(stat=" identity ")
X 轴显示球队列中的唯一值,Y 轴显示每个球队的积分列中的值总和。
例如:
- A队的积分总和为19分。
- B队的总分是27分。
- C队的总分是35分。
通过在geom_bar()函数中使用stat=”identity” ,我们可以显示数据框中特定变量值的总和,而不是计数。
注意:为了使stat=”identity”正常工作,您必须在aes()参数中同时提供 x 变量和 ay 变量。
其他资源
以下教程解释了如何在 ggplot2 中执行其他常见任务:
如何调整ggplot2中条形图之间的间距
如何从 ggplot2 图中删除 NA
如何更改ggplot2中堆积条形图的条形颜色