【发布时间】:2016-07-25 07:34:13
【问题描述】:
我在 Ubuntu 中使用 R studio,标准更新的 R 和 ggplot2
我尝试在 ggplot 中创建直方图,并按组分隔数据。
我需要绘图的 y 轴来表示被分面网格分割的子组中每个 bin 的频率。
例如,如果我在数据中有两个条目
a group
1 1
2 2
我需要使用 facet_grid 按组拆分,然后显示 a 有一个代表 1 的条形,这是第 1 组中示例的 100%,反之亦然。
我发现这样做的方法是使用 (..count..)/sum(..count) 但是 sum(..count..) 将计算整个数据框中出现的频率,并会给我不想要的结果,
我找不到深入使用 ..count.. 的好文档。
question about special ggplot variables
another question about ..count..
文档中没有什么非常全面的,
这是我正在使用的示例代码
df <- data.frame(a = 1:10, b = 1:10, group = c(rep(1,5),rep(2,5)))
p<-ggplot(df) + geom_histogram(aes(x = a, y = (..count..)/sum(..count..))) +
facet_grid(group ~ .)
您可以看到 y 轴将包含 0.1 作为最大值,例如,我希望它显示 1 值的 100% 位于第 1 组中。等等。
编辑:
感谢 Jimbou 的回答和对适用于离散数据的精心构建的漫游的参考,请注意,我在这里遇到的真正问题将需要使用连续数据,以及将多个值分组的 bin,此外,没有关于如何使用 ..count.. 函数执行此操作的适当文档,因此我认为这对于找到解决方案很重要,而不是使用 walk around
【问题讨论】:
-
你能用吗? ggplot(df, aes(x=a)) + geom_histogram() + facet_grid(group ~ .)
-
它产生相同的结果,这里的问题是 y 轴上的比例以及 ..count.. 计算数据不同部分的方式。 @Jimbou
-
当每个变量都在同一个组中时,为什么需要一定比例的组成员。
-
我不需要群组成员的比例,我需要分配的比例,请注意代码。 @sayaa
-
@captainshai 这不是我的。请看我的回答。