ggplot2:使用geom_bar

时间:2017-10-20 10:54:24

标签: r ggplot2

我正在尝试使用geom_barposition = "dodge"绘制钻石的比例。这就是我所做的。

library(ggplot2)

ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut))

下面的图片告诉我每种cut类型有多少颗钻石。

enter image description here

现在让我们做一些奇特的事。

ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

下面的图片按每个clarity类型的cut分组钻石计数。

enter image description here

我想做的是获得与上面相同的躲闪情节,但显示比例而非计数

例如,对于cut=idealclarity = VS2,比例应为5071/21551 = 0.23

2 个答案:

答案 0 :(得分:2)

你可以尝试

library(tidyverse)
diamonds %>%
  count(cut, clarity) %>% 
  group_by(cut) %>% 
   mutate(Sum=sum(n)) %>% 
   mutate(proportion = n/Sum) %>% 
  ggplot(aes(y=proportion, x=cut,fill=clarity)) +
   geom_col(position = "dodge")

enter image description here

答案 1 :(得分:-1)

创建一个具有正确百分比的列(名为“percentage”),然后使用

require(ggplot2)
require(scales)

ggplot(data = diamonds) + 
geom_bar(mapping = aes(x = cut, y = percentage, fill = clarity), position = "dodge") + 
scale_y_continuous(labels = scales::percent)

您也可以像Maurits Evers所建议的那样计算内联百分比。