日期在R图中显示为小数

时间:2012-02-07 14:43:21

标签: r date zoo

我正在尝试使用沿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?

2 个答案:

答案 0 :(得分:3)

axis.yearmon中存在一个在动物园的开发版本中修复的错误。试试这个:

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上,它包含了上述功能,因此不再需要开发版本。

output of sample plot.zoo using yearmon index class

答案 1 :(得分: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)