【问题标题】:Stacked area cumulative sum plot堆积面积累积和图
【发布时间】:2020-11-25 14:43:01
【问题描述】:

我有一个数据框df,如下所示:

      value group      dates
      1     1           2020-01-01
      5     1           2020-01-02
      6     1           2020-01-03
      1     2           2020-01-04
      3     2           2020-01-05
      1     2           2020-01-06

我需要制作一个显示值总和的堆积面积图,如下所示:

ggplot(df,aes(x=dates,y=cumsum(value)))+geom_area()

结果如下:

我需要的是根据组用颜色填充绘图,如下所示:

但是,我无法找到如何做到这一点。我确信这是微不足道的,但不幸的是我没有找到答案。

我尝试过的只是添加填充,就像ggplot(df,aes(x=dates,y=cumsum(value),fill=as.factor(group)))+geom_area(position = 'stack') 但这会导致以下结果

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    这可以这样实现:

    1. 扩展数据集,以便您拥有 obs。对于每个日期的每个组,使用例如tidyr::complete
    2. 按组计算累计和
    library(tidyverse)
    
    df <- read.table(text = "value group      dates
          1     1           2020-01-01
          5     1           2020-01-02
          6     1           2020-01-03
          1     2           2020-01-04
          3     2           2020-01-05
          1     2           2020-01-06", header = TRUE)
    
    df %>% 
      tidyr::complete(group, dates, fill = list(value = 0)) %>% 
      arrange(group, dates) %>%
      group_by(group) %>% 
      mutate(dates = as.Date(dates),
             value = cumsum(value)) %>% 
      ggplot(aes(x=dates,y = value, fill = factor(group), group = rev(group))) + geom_area(position = 'stack')
    

    【讨论】:

      猜你喜欢
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2018-10-25
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多