阴影时间序列图的几个区域:使用geom_rect错误

时间:2018-06-07 20:48:39

标签: r ggplot2 time-series

我试图使用“geom_rect”对时间序列图的几个部分进行着色。但是,我有错误消息“Error in as.Date.default(date) : do not know how to convert 'date' to class “Date”。为什么?以及如何解决这个问题?

这是一个可重复的例子:

  library(ggplot2)
  dat <- data.frame(date=seq.Date(as.Date('2005-01-01'), as.Date('2016-12-31'),length.out=100), y=runif(100)) 
  print(dat)
  block <- data.frame(level = c('A','B', "C"), 
                       ymn = -Inf, 
                       ymx = Inf,
                       xmn = c(as.Date('2006-01-01'), as.Date('2010-01-01'), as.Date('2014-01-01')),
                       xmx = c(as.Date('2006-12-31'), as.Date('2010-12-31'), as.Date('2014-12-31')))
  print(block)

  ggplot(data=dat, aes(x=as.Date(date), y=y)) + 
    geom_line(size = 1) +
    geom_rect(data=block,aes(xmin=as.Date(xmn),xmax=as.Date(xmx),ymin=ymn,ymax=ymx, fill=level), alpha = 0.3)

1 个答案:

答案 0 :(得分:0)

这将有效:

ggplot(data=dat, aes(x=as.Date(dat$date), y=dat$y))

ggplot(data=dat, aes(x=dat$date, y=dat$y))

下一个选项也可以使用:

ggplot(data=dat, aes(x=as.Date(dat$date), y=dat$y)) + 
  geom_line(size = 1)

但你真正的问题是,block对象的形状不匹配data你使用它的方式,但这是一个无关的问题。