繁体   English   中英

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

[英]How to create stacked geom_bar from summarized data

我有以下数据框:


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(手绘):

在此处输入图片说明

基本上,我们要基于比例count列创建堆积条形图。

我怎样才能做到这一点?

我坚持下面的代码:

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

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

在此处输入图片说明

您无法指定y美学来定义aes条形的高度:

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

在此处输入图片说明


如果需要规范化:

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM