我正在尝试创建一个包含两个时间序列的图:
library(zoo)
library(tseries)
library(ggplot2)
library(ggfortify)
ts1 <- ts(c(1,2,3,4))
ts2 <- ts(c(1.1, 2.1, 3.1, 4.1))
autoplot(ts.union(ts1, ts2), facets = FALSE) +
scale_color_manual(breaks = c("ts1", "ts2"), labels = c("Actual", "Forecasted"), values=c("black", "red"))
更改每个系列的图例标题和颜色后,我想修改线宽和类型,也是按系列修改,但调用scale_linetype_manual
似乎不会稍微改变一下。我该怎么办?
答案 0 :(得分:2)
在更改之前,您需要为绘图添加相应的美学效果。为此,您需要知道autoplot
用于美学映射的变量的名称:请参阅色标的名称。
用于绘图的数据框如下所示
# Index plot_group value
#1 1 ts1 1.0
#2 2 ts1 2.0
#3 3 ts1 3.0
#4 4 ts1 4.0
#5 1 ts2 1.1
#6 2 ts2 2.1
#7 3 ts2 3.1
#8 4 ts2 4.1
autoplot
为您创建列plot_group
,为了区分这两个时间序列,它会(仅)将颜色映射到它。因此,您可以致电scale_color_manual
。
您可以使用此变量将另一个美学映射到它,例如size
和linetype
。
autoplot(ts.union(ts1, ts2), facets = FALSE) +
scale_color_manual(labels = c("Actual", "Forecasted"),
values=c("black", "red")) +
aes(linetype = plot_group,
size = plot_group) +
scale_linetype_manual(labels = c("Actual", "Forecasted"),
values = c(1, 2)) +
scale_size_manual(labels = c("Actual", "Forecasted"),
values = c(1, 2))
数据强>
p <- autoplot(ts.union(ts1, ts2), facets = FALSE)
p$data