我需要在3个月内可视化气象站的数据。在季节中,在5个特定日期对地面进行了气体采样。我想用气象站数据在图中突出显示这些日期。
我正在尝试通过在我制作的geom_point
ggplot
上放置灰色条来实现这一目标
p <- ggplot(ws_may_sep_plot, aes (x = date_time, y = temperature)) +
geom_point(size=0.5) +
scale_x_datetime(breaks = "2 week")
ggtitle("Ambient temperature")
may_start <- "2012-05-22"
may_start_iso <- as.Date(may_start)
may_end <- "2012-05-23"
may_end_iso <- as.Date(may_start)
rect <- data.frame(xmin= may_start_iso, xmax= may_end_iso, ymin=-Inf,
ymax=Inf)
p + geom_rect(data=rect, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
color="grey20",
alpha=0.5,
inherit.aes = FALSE)
以下是数据链接:https://www.dropbox.com/s/2z0branzp7r26gl/highlighting%20dates.R?dl=0
glimpse(ws_may_sep_plot)
Observations: 2,209
Variables: 8
Groups: rh, precipitation, temperature, par [2,203]
$ date_time <dttm> 2012-05-15 00:00:00, 2012-05-15 01:00:00, 2012-05-15 02:00:00, 2012-05-15 03:00:00, 201...
$ temperature <dbl> 3.1, 2.3, 3.3, 4.1, 5.1, 7.1, 8.1, 7.7, 8.0, 9.5, 11.0, 10.7, 9.9, 9.6, 9.6, 10.1, 9.9, ...
运行代码时,出现以下错误:
无效的输入:time_trans仅适用于POSIXct类的对象
答案 0 :(得分:1)
使用scale_x_date("2 week")
代替scale_x_datetime
。您的日期仅是日期,而不是日期时间(带有日期的时间部分)。
df <- data.frame(date = seq.Date(as.Date("2012-01-01"), as.Date("2012-07-01"), by = "day"),
temperature = rnorm(183, 30, 1))
p <- ggplot(df, aes (x = date, y = temperature)) +
geom_point(size=0.5) +
#scale_x_datetime(breaks = "2 week")
ggtitle("Ambient temperature")
may_start <- "2012-05-22"
may_start_iso <- as.Date(may_start)
may_end <- "2012-05-23"
may_end_iso <- as.Date(may_start)
rect <- data.frame(xmin= may_start_iso, xmax= may_end_iso, ymin=-Inf,
ymax=Inf)
p + geom_rect(data=rect, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
color="grey20",
alpha=0.5,
inherit.aes = FALSE)+
scale_x_date(breaks = "2 week") # Should work!