我有一个数据框,它是每个变量的百分比分配。行的总和等于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):
我试图按照说明进行操作,这并不是我想要的:
我收到错误消息:
错误:A:D必须求和列位置或名称,而不是双精度向量
此外:警告消息:
1:在x:y中:数值表达式具有252个元素:仅第一个使用
2:在x:y中:数值表达式具有252个元素:仅第一个使用
答案 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()