ggplot geom_bar: aes(group = 1) 的含义

ggplot geom_bar: meaning of aes(group = 1)

我正在学习 geom_bar r4ds.had.co.nz 的第 3.7 节。我 运行 这样的代码:

library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

然后我有这个情节:

关键是,如果我排除 "group = 1" 部分:

library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop..))

剧情会出错,

但如果我用 group = 2 或 group = "x" 替换 group = 1,情节看起来仍然正确。所以不太明白这里group = 1的意思和使用方法

group="whatever" 是一个 "dummy" 分组来覆盖默认行为,(这里)是按 cut 分组,通常是按 x 变量分组。 geom_bar 的默认值是按 x 变量分组,以便单独统计 x 变量的每个级别中的行数。例如,在这里,默认值为 geom_bar 到 return cut 等于 "Fair"、"Good" 等的行数

但是,如果我们想要比例,那么我们需要将cut的所有级别一起考虑。在第二个图中,数据首先按 cut 分组,因此 cut 的每个水平被单独考虑。 Fair in Fair 的比例是 100%,Good in Good 的比例也是 100%,等等。group=1(或者 group="x",等等)防止了这一点,所以每一层切割的比例都会相对于所有切割级别。

Group 将帮助绘图查看包含特定切割的特定行,并找到相对于整个数据库的比例,作为整个数据集中理想切割的比例。

如果不使用组,则根据包含该字段的数据计算比例,并且最终在任何情况下都将是 100%。例如,ideal cut在ideal cut具体数据中的比例为1。