簡體   English   中英

使用xts在R中繪制具有不同時間索引的多個時間序列

[英]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 我找到了一些,但我不相信他們是最好的方式。

  1. na.omit(my.ts)na.exclude(my.ts)似乎太貪心了 - 它們只保留兩列不是NA 如何將此行為僅限於行式操作?
  2. na.approx(my.ts)填補了NA ,但我想知道這種線性近似是否會創建人工數據點,這會使情節看起來不同。
  3. 在我看來,最好的方法是一個可以傳遞給情節的選項,告訴我們應該用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("")

ggplot2兩個時間序列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM