【发布时间】:2013-06-17 20:36:55
【问题描述】:
在为时间序列绘制轴时,我们通常会创建刻度线并单独添加轴。 由于我必须绘制很多时间序列,我尝试编写以下函数:
简单的绘图命令
set.seed(1)
x <- as.ts(rnorm(1:150))
plot <- plot(x, xaxt = "n", yaxt = "n")
将此answer中的一组命令转换为函数
tt = seq(as.Date("1994-03-01"), by="months", length=150)
tsAxis <- function (tt) {
ix <- seq_along(tt) # number of ticks
fmt <- "%b-%y" # format of time
labs <- format(tt, fmt) # names or labels of dates
axis(1, at = tt[ix], labels = labs[ix],
tcl = -0.7, cex.axis = 0.7, las = 2)
}
那么 tsAxis(tt) 必须绘制轴,但它没有,也没有错误。 即使单独键入命令也不会绘制轴。
有什么解决办法吗?
【问题讨论】:
-
在您的
axis函数中,尝试将参数at=tt[ix]更改为at=ix。似乎 R 没有日期形式的 x 轴,而是整数。 -
谢谢。现在绘制了轴,但提出了另一个问题。如果我们只想要三分之一的刻度线
ix <- seq(1, length(tt), 3),那么刻度线和标签的数量不匹配。在这种情况下如何指定刻度线位置? -
您是否尝试将行
ix <- seq_along(tt)更改为ix <- seq(1, length(tt), 3)并再次运行您的代码?似乎对我有用。我在tsAxis函数中有axis(1, at = ix, labels = labs[ix], tcl = -0.7, cex.axis = 0.7, las = 2),这似乎有效。 -
我试过了,但它给出的错误是 at 和 label 长度不同。它现在可以工作了。
-
您想发表评论作为答案还是这个问题微不足道并被删除?