R:在ggplot2中创建时间序列的堆积面积图

时间:2018-08-09 12:15:16

标签: r ggplot2 charts stacked-area-chart

我有一个数据框,它是每个变量的百分比分配。行的总和等于1时有四个变量。这是数据帧的示例输出:

dates       A   B   C   D
1997-01-01  0.2 0.2 0.5 0.1 
1997-02-01  0.3 0.2 0.4 0.1
1997-03-01  0.1 0.3 0.2 0.4
...         ... ... ... ...
2017-12-01  0.2 0.2 0.1 0.5

如何创建类似的堆积面积图,如x轴显示年份,y轴从0到1(从https://ggplot2.tidyverse.org/reference/geom_density.html):

enter image description here

我试图按照说明进行操作,这并不是我想要的:

enter image description here

我收到错误消息:

  

错误:A:D必须求和列位置或名称,而不是双精度向量

     

此外:警告消息:

     

1:在x:y中:数值表达式具有252个元素:仅第一个使用

     

2:在x:y中:数值表达式具有252个元素:仅第一个使用

1 个答案:

答案 0 :(得分:2)

我想您想要的是面积,而不是密度。另外,您还想将数据重整为长格式。

library(tidyverse)

df <- read.table(text = "
dates       A   B   C   D
1997-01-01  0.2 0.2 0.5 0.1 
1997-02-01  0.3 0.2 0.4 0.1
1997-03-01  0.1 0.3 0.2 0.4
", header = TRUE)

df %>% 
  mutate(dates = as.Date(dates)) %>% 
  gather(variable, value, A:D) %>% 
  ggplot(aes(x = dates, y = value, fill = variable)) +
  geom_area()

enter image description here