[英]Plot multiple time series with different time indices in R using xts
使用R,我有几个时间序列,他们有不同的时间指数,如
date.a<-seq(as.Date('2014-01-01'),as.Date('2014-02-01'),by = 2)
date.b<-seq(as.Date('2014-01-01'),as.Date('2014-02-15'),by = 3)
df.a <- data.frame(time=date.a, A=sin((1:16)*pi/8))
df.b <- data.frame(time=date.b, B=cos((1:16)*pi/8))
我使用将它们合并为一个xts
时间序列
my.ts <- merge(xts(df.a$A,df.a$time),xts(df.b$B,df.b$time))
我希望将它们显示在单独的面板上,或者以不同的颜色显示在一起。
更新:
使用xtsExtra
,我能够使用以下命令在一个绘图中或在单独的面板中显示两个系列:
#one panel, different colors
plot(my.ts, screens=1, type="p")
#two panels, same color
plot(my.ts, screens=c(1,2), type="p")
这种方法仅适用于type="p"
- 绘图线不会显示整个系列,并创建不连续性。 这可能是由于合并系列引起的NA
而引起的。 我必须使用哪些选项来使用这些NA
? 我找到了一些,但我不相信他们是最好的方式。
na.omit(my.ts)
和na.exclude(my.ts)
似乎太贪心了 - 它们只保留两列不是NA
。 如何将此行为仅限于行式操作? na.approx(my.ts)
填补了NA
,但我想知道这种线性近似是否会创建人工数据点,这会使情节看起来不同。 NA
做什么。 有这样的事吗? 使用na.approx
。 另请注意,此处使用已由xts加载的zoo:
z <- na.approx(as.zoo(my.ts))
# plot.zoo
plot(z, screen = 1, col = 1:2, ylab = "Y", xlab = "")
# xyplot.zoo
library(lattice)
xyplot(z, screen = 1, col = 1:2, ylab = "Y", xlab = "")
# autoplot.zoo
library(ggplot2)
autoplot(z, facet = NULL) + ylab("Y")
也许你应该在没有xts
情况下做到这一点(不要看它需要) ggplot2
可能是一个解决方案
require(ggplot2)
ggplot()+geom_line(aes(x=time,y=A),data=df.a, col=2)+
geom_line(aes(x=time,y=B),data=df.b,col=3) + ylab("")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.