我试图使用“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)
答案 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
你使用它的方式,但这是一个无关的问题。