R:在 ggplot2 中创建时间序列的堆积面积图
R: Create a stacked area plot of time series in ggplot2
我有一个数据框,它是每个变量的百分比分配。有四个变量,其中行的总和等于 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):
我按照说明进行的尝试产生了这个结果,这并不是我要找的:
我收到错误消息:
Error: A:D must evaluate to column positions or names, not a double vector
In addition: Warning messages:
1: In x:y : numerical expression has 252 elements: only the first used
2: In x:y : numerical expression has 252 elements: only the first used
我猜你想要面积,而不是密度。您还想将数据重塑为长格式。
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()
我有一个数据框,它是每个变量的百分比分配。有四个变量,其中行的总和等于 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):
我按照说明进行的尝试产生了这个结果,这并不是我要找的:
我收到错误消息:
Error: A:D must evaluate to column positions or names, not a double vector
In addition: Warning messages:
1: In x:y : numerical expression has 252 elements: only the first used
2: In x:y : numerical expression has 252 elements: only the first used
我猜你想要面积,而不是密度。您还想将数据重塑为长格式。
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()