Даты, отображаемые в виде десятичных дробей на графике R - PullRequest
3 голосов
/ 07 февраля 2012

Я пытаюсь построить некоторые данные с данными за месяц по оси 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 ]

3 голосов
/ 07 февраля 2012

В axis.yearmon есть ошибка, которая исправлена ​​в развивающей версии zoo.Попробуйте это:

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)

ДОБАВЛЕНО: С тех пор, как на этот вопрос был дан ответ, в CRAN появилась версия 1.7-7, включающая в себя вышеуказанную функциональность, поэтому версия для разработки больше не нужна.

output of sample plot.zoo using yearmon index class

1 голос
/ 07 февраля 2012

Если вы посмотрите, как структурированы объекты класса 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...