ggplot2:使用百分比时,美学上的群体论点

时间:2019-09-18 05:41:41

标签: r ggplot2

这是“数据科学R”中的数据可视化问题。

问题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中存在问题。我很清楚,因此将原始代码更改为以下代码。

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轴现在是prop,但是这并不是我想要的,因为在cut变量(x轴)中所有级别的总比例之和必须为1(= 100%),但超过了1。我想更改比例值(y轴)。

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

enter image description here

1 个答案:

答案 0 :(得分:2)

..prop..计算组内的百分比。它需要一个分组变量,否则每个x的每个prop都是它自己的组,并且x = 1就是100%。

当您输入group = 1时,prop是所有条目x的百分比,因为所有条目都属于同一组。您已经发现了。

在上一个绘图中,当您按color分组时,百分比是在颜色内计算的。这意味着每种颜色的总和为1。

这是您要实现的目标吗?

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = color, y = ..count../sum(..count..)), position = "fill")

enter image description here