如何从汇总数据创建堆叠geom_bar

时间:2017-10-10 01:54:11

标签: r ggplot2 dplyr

我有以下数据框:


library(tidyverse)

dat <- tribble(
  ~group, ~y, ~count, 
  "group_1",  "foo", 10,
  "group_1",  "bar", 20,
  "group_1",  "qux", 30,
  "group_2",  "foo", 100,
  "group_2",  "bar", 700,
  "group_2",  "qux", 150
)

dat 
#> # A tibble: 6 x 3
#>     group     y count
#>     <chr> <chr> <dbl>
#> 1 group_1   foo    10
#> 2 group_1   bar    20
#> 3 group_1   qux    30
#> 4 group_2   foo   100
#> 5 group_2   bar   700
#> 6 group_2   qux   150

我想要做的是创建一个看起来大致相似的堆叠geom_bar(手绘):

enter image description here

基本上我们希望根据比例count列创建堆积条。

我该怎么做?

我坚持使用此代码:

dat %>% 
  ggplot() +
  geom_bar(aes(x=group, fill=y))

看起来像这样(注意y不成比例):

enter image description here

1 个答案:

答案 0 :(得分:1)

您未能指定y美学来定义aes中条形的高度:

dat %>% 
    ggplot() +
    geom_bar(aes(x = group, y = count, fill = y), stat = 'identity')

enter image description here

如果您需要规范化:

dat %>% 
    ggplot() +
    geom_bar(aes(x=group, y = ave(count, group, FUN = function(x) x/sum(x)), fill=y), stat = 'identity') + 
    ylab('Proportion')

enter image description here