首页 > 解决方案 > 使用百分比时的美学分组论点

问题描述

这是来自“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..))

当您看到代码及其结果时,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))

我可以处理第一个,它是黑色的。但问题是下一个。我知道包含“group = 1”就像黑条一样,因此将“group = 1”更改为“group = color”。y 轴现在是道具,但这并不完全是我想要的,因为切割变量(x 轴)中所有级别的整体比例之和必须为 1(=100%)但它超过 1。我想改变比例值(y 轴)。

如果您能帮我解决这个问题,我将不胜感激。

在此处输入图像描述

标签: rggplot2

解决方案


计算组内的..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")

在此处输入图像描述


推荐阅读