这是来自“R for Data Science”的数据可视化问题。
问题5.在我们的比例条形图中,我们需要设置group = 1,为什么?换句话说,这两张图有什么问题?
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, y = ..prop..))
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop..))
Run Code Online (Sandbox Code Playgroud)
正如您看到的代码及其结果,y-axix 中存在一个问题,因为不包括 group 参数。我很清楚,所以在将原始代码更改为下面之后。
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop.., group = 1))
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop.., group = color))
Run Code Online (Sandbox Code Playgroud)
我可以处理第一个,它是黑色的。但问题是下一个。我知道包括“group = 1”就像黑条一样,因此将“group = 1”更改为“group = color”。y 轴现在是道具,但它不完全是我想要的,因为切割变量(x 轴)中所有级别的整体比例总和必须为 1(=100%)但它超过了 1。我想改变比例值(y 轴)。
如果您能帮我解决这个问题,我将不胜感激。

该..prop..计算组中的百分比。它需要一个分组变量否则每个x是其自己的组和prop= 1即100%,对于每一个x。
当您放置的group = 1 prop是 x 占所有条目的百分比时,因为所有条目都属于同一组。你已经发现了。
在你的最后一个图中,当你分组时color,百分比是在颜色内计算的。这意味着每种颜色的总和为 1。
这是您尝试实现的目标吗?
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = color, y = ..count../sum(..count..)), position = "fill")
Run Code Online (Sandbox Code Playgroud)