【问题标题】:Plotting a stacked bar chart for according to a quarterly time series根据季度时间序列绘制堆积条形图
【发布时间】:2020-01-27 16:07:09
【问题描述】:

我一直在处理 6 年的抗生素使用数据,并设法绘制了一个条形图,其中包含每年每季度的抗生素使用总量。但是,我现在需要做同样的事情,但要计算每季度使用的每种抗生素的总数。我想通过制作一个堆积条形图来做到这一点(每个四分之一条将显示该季度使用的每个类的 x 数量)。

数据集中的一些示例数据是;

Date Antibiotic.Total Total.Cephalosporin Total.AminoglycosideTotal.B.Lactam
1   14/05/2013  0.60    0.60    0.00    0.00    
2   03/07/2013  1.20    1.20    0.00    0.00    
3   02/08/2013  4.62    0.00    2.82    1.80    
4   02/08/2013  0.60    0.60    0.00    0.00    
5   20/08/2013  1.20    1.20    0.00    0.00    
6   14/09/2013  1.20    1.20    0.00    0.00    
7   21/10/2013  0.90    0.90    0.00    0.00    
8   14/11/2013  0.60    0.60    0.00    0.00    
9   14/11/2013  2.25    2.25    0.00    0.00
10  01/05/2014  0.60    0.60    0.00    0.00    
11  29/08/2014  0.50    0.50    0.00    0.00    
12  11/09/2014  6.00    4.00    2.00    0.00    
13  11/09/2014  1.20    0.80    0.40    0.00    
14  11/09/2014  0.60    0.60    0.00    0.00    
15  02/10/2014  20.00   0.00    0.00    0.00    
16  20/10/2014  2.58    0.00    1.98    0.00    
17  20/10/2014  5.00    5.00    0.00    0.00    
18  02/04/2015  1.20    1.20    0.00    0.00    
19  24/04/2015  31.50   0.00    17.50   14.00   
20  29/04/2015  0.45    0.45    0.00    0.00    
21  30/04/2015  31.50   0.00    17.50   14.00   
22  03/05/2015  18.00   0.00    10.00   8.00    
23  03/05/2015  45.00   0.00    25.00   20.00

我已经能够使用以下示例代码按季度绘制抗生素总量;

datapractice %>%
mutate(Q = lubridate::quarter(datepractice, with_year = T)) %>%
group_by(Q) %>% 
summarize(Antibiotic_by_Q = sum(Antibiotic.Total)) %>% 
ggplot(aes(Q, Antibiotic_by_Q)) + geom_bar(stat = "identity", fill = 
"steelblue") + scale_x_yearqtr(format = "%Y") + ylab("Antibiotic Total 
(Grams)") + xlab("Date (Quarters/Year)") +
labs(title = "Antibiotic Use Over a 6 Year Period"

我试图通过更改以summary( 开头的代码行来更改上面的代码以显示以下内容

`summarize(Antibiotics_by_Q = sum(Total.Cephalosporin, 
Total.Aminoglycoside, Total.B.Lactam)) %>%`

唉...这没有奏效:(

附言有关季度抗生素总量的图,请参见附图...

任何帮助尝试格式化我已经制作的条形图以将数据显示为堆积条形图将不胜感激! :)

【问题讨论】:

    标签: r ggplot2 time-series stacked-chart


    【解决方案1】:

    我不确定以下是问题所要求的,但诀窍是 summarise_if 列是数字,然后是 reshape from wide to long format

    我已经删除了自定义颜色,因为现在有 4 种颜色。

    library(tidyverse)
    library(zoo)
    library(lubridate)
    
    datapractice %>%
      mutate(Date = dmy(Date),
             Q = quarter(Date, with_year = TRUE)) %>%
      group_by(Q) %>% 
      summarise_if(is.numeric, sum, na.rm = TRUE) %>%
      gather(Key, Total, -Q) %>%
      ggplot(aes(Q, Total, fill = Key)) +
      geom_bar(stat = "identity") +
      scale_x_yearqtr(format = "%Y") + 
      ylab("Antibiotic Total (Grams)") + 
      xlab("Date (Quarters/Year)") +
      labs(title = "Antibiotic Use Over a 6 Year Period")
    

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 2012-09-17
      • 2021-12-27
      • 2020-02-08
      • 2016-05-24
      相关资源
      最近更新 更多