我正在尝试开发一个天气数据中出现的天气图 - 类似的东西。
我想绘制每日价值(尽管平均值可以出现在圆圈中)。我正在使用 ggplot2,因为它需要多方面的(每个月和每年)。
st <- as.Date ("2009-1-1")
en <- as.Date ("2011-12-28")
date1 <- seq(st, en, "1 day")
year <- format(date1, "%Y")
month <- format (date1, "%b")
day <- as.numeric (format(date1, "%d"))
avgtm <- round (rnorm (length(date1), 50,5), 1)
maxtm <- avgtm + abs(rnorm (length (avgtm), 0, 5))
mintm <- avgtm - abs(rnorm (length (avgtm), 0, 5))
myd <- data.frame ( year, month, day, avgtm, maxtm, mintm)
require(ggplot2)
qplot(day, avgtm, data = myd, geom = "line", col = "red") +
facet_grid(year ~ month) + theme_bw()
这里有一个主要问题,线路将在几个月之间连接。
每个月都绘制到最大值(尽管一个月可以以 28 结束,该月留空)。
有没有一种聪明的方法来实现我想要实现的目标。我试过 ggplot2 但可能还有其他不错的选择。
编辑:
我试图在每月的第一天添加垂直线来区分月份。这是我试图找到一个月的第一天:
td = as.Date (seq(as.Date("2009/1/1"), as.Date("2011/12/28"), "months"))
我试图用它来绘制线:
qplot(date, avgtm, data = myd, geom = "line", col = "red") +
facet_wrap(~year, scales='free_x', ncol=1, nrow=3) +
geom_vline(xintercept=td, linetype="dotted") + theme_bw()
但是运行报错:Error : Invalid intercept type: should be a numeric vector, a function, or a name of a function
如何绘制带有日期的垂直线?