gpt4 book ai didi

r - 在 r 中绘制每月和每年的天气数据

转载 作者:行者123 更新时间:2023-12-04 12:03:55 24 4
gpt4 key购买 nike

我正在尝试开发一个天气数据中出现的天气图 - 类似。

enter image description here

我想绘制每日值(value)(尽管平均值可以出现在圆圈中)。我正在使用 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()

enter image description here

这里有一个主要问题,线路会在几个月之间连接。

每个月都绘制为最大值(尽管一个月可以以 28 结束,该月留空)。 enter image description here

有没有一种聪明的方法来实现我想要实现的目标。我试过 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()

但是运行错误:错误:无效的拦截类型:应该是数值向量、函数或函数名称

如何绘制带有日期的垂直线?

最佳答案

latticeExtra中的panel.xblocks有一个解决方案:

st <- as.Date("2009-1-1")
en <- as.Date("2011-12-28")
date1 <- seq(st, en, "1 day")

avgtm <- round (rnorm (length(date1), 50,5), 1)

myd <- data.frame(date1, avgtm)

我定义了两个函数来提取月份和年份值,而不是将它们包含在 data.frame 中。这种方法对xyplotpanel函数中的panel.xblocks:

month <- function(x)format(x, '%m')
year <- function(x)format(x, '%Y')

我使用 year(date1) 作为条件变量来生成三个面板。这些面板中的每一个都将显示该时间序列年(panel.xyplot)和一系列连续的 block 交替颜色以突出显示月份(panel.xblocks)。你应该注意 panel.xblocks 中的 y 参数是函数month之前定义的:

xyplot(avgtm ~ date1 | year(date1), data=myd,
type='l', layout=c(1, 3),
scales=list(x=list(relation='free')),
xlab='', ylab='',
panel=function(x, y, ...){
panel.xblocks(x, month,
col = c("lightgray", "white"),
border = "darkgray")
panel.xyplot(x, y, lwd = 1, col='black', ...)
})

xblocks

关于r - 在 r 中绘制每月和每年的天气数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com