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)的主要内容,如果未能解决你的问题,请参考以下文章
ggplot2:geom_bar 与组,position_dodge 和填充