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

Posted

技术标签:

【中文标题】ggplot geom_bar:aes的含义(组= 1)【英文标题】:ggplot geom_bar: meaning of aes(group = 1) 【发布时间】:2017-02-14 04:25:54 【问题描述】:

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

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 = 1 替换为 group = 2 或 group = "x",则绘图看起来仍然正确。所以我不太明白这里group=1的含义和使用方法。

【问题讨论】:

【参考方案1】:

group="whatever" 是一个“虚拟”分组,用于覆盖默认行为,(此处)按 cut 分组,通常按 x 变量分组。 geom_bar 的默认值是按 x 变量分组,以便分别计算 x 变量的每个级别中的行数。例如,这里默认为geom_bar 返回cut 等于“Fair”、“Good”等的行数。

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

【讨论】:

这是否意味着它们是等价的? geom_bar(mapping = aes(x = cut, y = after_stat(prop), group=1))geom_bar(mapping = aes(x = cut, y = after_stat(count/sum(count))))?【参考方案2】:

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

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

【讨论】:

以上是关于ggplot geom_bar:aes的含义(组= 1)的主要内容,如果未能解决你的问题,请参考以下文章

ggplot用geom_bar中的百分比替换计数

ggplot2:geom_bar 与组,position_dodge 和填充

应用权重后ggplot中的标签

如何使用 ggplot 中的 facet_wrap 选项可视化每个组的大小?

ggplot2:使用填充geom_bar指定颜色时缺少图例

scale_fill_manual 在 geom_bar 中不起作用