【发布时间】:2018-06-07 20:48:38
【问题描述】:
我正在尝试使用“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)
【问题讨论】:
-
您可能需要
inherit.aes = FALSE中的geom_rect。它可能会看到您定义的全局x。 -
date列已经是一个 Date 对象,block中的日期列也是如此。去掉你所有的aes中的as.Date调用,这样就可以了 -
太棒了!它通过在
geom_rect中添加inherit.aes = FALSE来工作!非常感谢您的帮助!
标签: r ggplot2 time-series