R 使用autoplot和ggplot更改每个时间序列的线型/宽度

R 使用autoplot和ggplot更改每个时间序列的线型/宽度,r,ggplot2,time-series,R,Ggplot2,Time Series,我试图创建一个包含两个时间序列的绘图: 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

我试图创建一个包含两个时间序列的绘图:

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似乎不会稍微改变绘图。我应该如何继续?

在更改之前,您需要将各自的美学添加到绘图中。为此,您需要知道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_组,为了区分这两个时间序列,它只将颜色映射到它。因此,您可以称之为“比例\颜色\手册”

可以使用此变量将另一种美学效果映射到它,例如大小和线型

资料


只是一个次要的后续问题-labels命令是否必须根据plot_group列中值的字母顺序提供标签?假设我在plot_group(曲线图组)列中将香蕉和苹果作为值,我想将它们标记为ts1和ts2,我是否应该将它们作为labels=cts2,ts1提供,以便按照阿尔卑斯顺序匹配它们?有关详细信息,请参阅《比例颜色手册》。如果传递给标签的向量未命名,则参数将按字母顺序匹配。尝试+缩放\颜色\手动标签=cts2=实际,ts1=预测,看看会发生什么。如果您命名这些向量,即值、标签等,您将始终处于保存状态。顺便说一句,我想没有必要使用zoo和tseries软件包。此外,比例\颜色\手册中的“中断”参数也不是必需的。
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