首页 > 解决方案 > ts.plot() 没有根据自定义 x 轴绘制时间序列数据

问题描述

我在尝试绘制一些时间序列数据时遇到问题;即,尝试根据实数(代表价格)绘制日期(以月为单位的增量)。

我可以毫无问题地绘制数据plot(months, mydata),但它是散点图格式。

但是,当我尝试使用ts.plotie进行相同操作时tsplot(months, mydata),出现以下错误:

Error in .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE) : no time series supplied

我试图通过这样做来绕过它tsplot(ts(months, mydata)),但是这样我得到了一条直线(我知道这是不正确的)。

我确保两者都months具有mydata相同的长度

编辑:我所说的自定义 x 轴是什么意思

我需要数据按月递增(特别是从 03/1998 到 02/2018) - 所以我在 R 中运行了以下内容:

d <- seq(as.Date("1998-03-01"), as.Date("2018-02-01"), "day")
months <- seq(min(d), max(d), "month")

现在我已经获得了每月的增量,我需要上面的变量 ,months作为时间序列图的 x 轴(也许更准确地说,时间索引)。

标签: rplottime-series

解决方案


使用包zoo,您可以执行以下操作。

library(zoo)

z <- zoo(mydata, order.by = months)

labs <- seq(min(index(z)), max(index(z)), length.out = 10)
plot(z, xaxt = "n")
axis(1, at = labs, labels = format(labs, "%m/%Y"))

数据创建代码。

set.seed(1234)

d <- seq(as.Date("1998-03-01"), as.Date("2018-02-01"), "day")
months <- seq(min(d), max(d), "month")

n <- length(months)
mydata <- cumsum(rnorm(n))

推荐阅读