我正在尝试使用沿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?
答案 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上,它包含了上述功能,因此不再需要开发版本。
答案 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)