3

我正在尝试沿 x 轴绘制一些带有月份数据的数据。不幸的是,月份显示为小数。有任何想法吗?

library(zoo)  # Requires the zoo library.
theMonths <- as.yearmon(c( "Mar 2011", "Apr 2011", "May 2011", "Jun 2011", "Jul 2011", "Aug 2011", "Sep 2011", "Oct 2011", "Nov 2011", "Dec 2011", "Jan 2012", "Feb 2012"))
x <- c(1:12)
plot(theMonths,x,axes=FALSE)
axis(1,theMonths)
# Why do the dates appear on the axis as decimals?
4

2 回答 2

3

axis.yearmonZoo 的开发版本中修复了一个错误。试试这个:

library(zoo)
source("http://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/zoo/R/yearmon.R?revision=916&root=zoo")
z <- zooreg(1:12, as.yearmon("2011-03"), freq = 12)
plot(z, cex = .8)

补充:由于这个问题得到了回答,动物园 1.7-7 已经出现在 CRAN 上,它包含上述功能,因此不再需要开发版本。

使用 yearmon 索引类输出样本 plot.zoo

于 2012-02-07T15:26:08.910 回答
1

如果您查看yearmon类对象的结构:

dput(theMonths)
structure(c(2011.16666666667, 2011.25, 2011.33333333333, 2011.41666666667, 
2011.5, 2011.58333333333, 2011.66666666667, 2011.75, 2011.83333333333, 
2011.91666666667, 2012, 2012.08333333333), class = "yearmon")

您可以看到它存储了这些十进制值,并调用as.numeric给出:

[1] 2011.167 2011.250 2011.333 2011.417 2011.500 2011.583 2011.667 2011.750 2011.833
[10] 2011.917 2012.000 2012.083

如果您查看axis,则第二个参数是at,这就是您所说的。当您未指定labels时,它必须将at值作为数字。如果您还指定标签,问题就解决了:

axis(1,theMonths,theMonths)
于 2012-02-07T15:40:49.673 回答