绘制已停止的时间序列对象

时间:2013-11-15 14:07:18

标签: r plot time-series zoo

考虑这个zoo对象的(简单)版本:

d <-  c("2007-01-31", "2007-02-28", "2007-03-31", "2007-04-30", "2007-05-31", "2007-06-30", "2008-02-28", "2008-03-31", "2008-04-30", "2009-09-30", "2009-10-31", "2009-11-30", "2009-12-31", "2010-01-31")
vec <- runif(14, 0.5, 0.7)
vec.zoo = zoo(vec, order.by = as.Date(d, format = "%Y-%m-%d"))
plot(vec.zoo, ylim = c(0,1))

如您所见,某些日期缺失(请查看索引d)。但是,当我绘制对象时,我得到以下内容:

enter image description here

我意识到这对于ggplot是可行的,但是结果是多个图而不是一个(参见线程:link

我希望能够在一个绘图中绘制动物园对象,但是当没有可用于特定日期的数据时,在绘图中留下一个空白区域。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:2)

假设您的数据频率为“每月”:

library(zoo)
library(lubridate) # for easy extraction of different components of date object

# convert 'd' to monthly data
d2 <- as.yearmon(d)


# create zoo object
z1 <- zoo(vec, order.by = d2)


# create a continuous series of monthly data, ranging from min(d) to max(d)
d3 <- as.Date(d)
tt <- as.yearmon(min(year(d)) + seq(month(min(d)) - 1, (year(max(d)) - year(min(d))) * 12)/12)


# expand z1 to a continuous series
z2 <- merge(z1, zoo(, tt))


plot(z2)

enter image description here

答案 1 :(得分:0)

vec更改为以下内容:

vec <- c(runif(5, 0.5, 0.7), NA, NA, NA, runif(5, 0.5, 0.7))

要休息,与vec相对应的日期必须有NA值,如果该日期没有数据则中断。