首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能用hydroTSM在一幅图中绘制多个时间序列吗?

我们能用hydroTSM在一幅图中绘制多个时间序列吗?
EN

Stack Overflow用户
提问于 2022-11-08 14:54:15
回答 1查看 41关注 0票数 0

我有以下格式的每日降水数据:

代码语言:javascript
复制
> head(df)
    I_2004   G_2004    T_2004       Date
1 3628.79853 2199.310 12741.413 2004-01-01
2 1556.66704 4322.884  5464.395 2004-01-02
3   20.43379 5592.103    72.998 2004-01-03
4  265.94247 8145.041   942.344 2004-01-04
5  914.93958 9668.531  3227.579 2004-01-05
6 2585.63558 6825.905  9043.866 2004-01-06

通常,我使用ggplot2绘制所有三个变量的时间序列:

代码语言:javascript
复制
  dfmelt<-melt(df,id.vars="Date")
ggplot(dfmelt,aes(x=Date,y=value,
                  col=variable,group=12))+
  labs(title='ANNUAL')+
  geom_line()

我曾使用hydroTSM绘制ts,但从未使用多变量t。我想知道是否有任何方法可以使用像hydroTSM这样的软件包来实现这个目标?

我目前的方法需要修改内容,这样做多年是很费时的。我希望用hydroTSM或任何其他合适的软件包来缩短这段时间。我的目标是绘制每月和季节的时间序列图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 15:12:00

我们在下面使用一个更大的数据框架(见末尾的说明),这样就可以显示月份的图表了。将数据帧df转换为动物园系列-- hydroTSM使动物园可用--并使用autoplot.zoo。使用“集合”和“尾”或“平均值”创建一个月图,并将其转换为ts以创建季节图。除了ggplot2之外,下面的包只使用hydroTSM已经拉进来的包。

代码语言:javascript
复制
library(ggplot2)
library(hydroTSM)

z <- read.zoo(df, index = "Date")
autoplot(z) # separate panels

autoplot(z, facets = NULL) # single panel

# monthly plot
zm <- aggregate(z, as.yearmon, tail, 1, frequency = 12)
autoplot(zm)

# for seasonal plot
tt <- as.ts(zm)
nc <- ncol(tt)
opar <- par(mfrow = c(nc, 1), mar = c(2, 4, 0, 4))
for(j in 1:nc) monthplot(tt[, j], ylab = colnames(tt)[j])
par(opar)

备注

df呈可复制的形态。比所讨论的要大,这样就可以显示每月的情节。

代码语言:javascript
复制
set.seed(123)
n <- 700
df <- data.frame(I_2004 = rnorm(n), 
                 G_2004 = rnorm(n),
                 T_2004 = rnorm(n),
                 Date = as.Date("2004-01-01") + 1:n - 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74362748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档