Ось R x обозначает только одно значение - PullRequest
3 голосов
/ 26 февраля 2011

Я создаю сюжет в R с датами в качестве оси.У моей рамки есть даты, нет проблем.Я использую пользовательский диапазон дат - тот, который обрезает некоторые из самых ранних данных, используя фиксированное начало, и немного расширяет последние данные, используя конец, определенный другим кодом.Диапазон составляет ~ 47 дней прямо сейчас.Это все работает нормально.

Моя проблема заключается в том, что метка xaxis включает только одну метку «Feb», но я бы хотел включить как минимум 3 метки, если не 5.

starttime <- strptime("20110110", "%Y%m%d")
endtime <- strptime("20110226 1202", "%Y%m%d %H%M") #This is actually determined programmatically, but that's not important
xrange <- c(starttime, endtime)
yrange <- c(0, 100)
par(mar=par()$mar+c(0,0,0,7),bty="l")
plot(xrange, yrange, type="n", xlab="Submission Time", ylab="Best Score", main="Top Scores for each team over time")
#More code to loop and add a bunch of lines(), but it's not really relevant

Полученный графиквыглядит так: enter image description here

Я действительно просто хочу более качественные этикетки.Меня не слишком беспокоит, что именно, но что-то с Месяцем + Днем и как минимум с 3 из них.

Ответы [ 3 ]

3 голосов
/ 26 февраля 2011

Попробуй это.Я немного изменил ваш сюжет () и добавил две строки

3 голосов
/ 27 февраля 2011

Кроме того, посмотрите на axis.Date(), который не универсальный S3, но может помочь установить дополнительные метки, которые вы хотите. Я написал патч для этой функции, который был включен несколько версий назад, который позволял оси без меток. Вот пример, взятый из ?axis.Date:

random.dates <- as.Date("2001/1/1") + 70*sort(stats::runif(100))
plot(random.dates, 1:100)
# or for a better axis labelling
plot(random.dates, 1:100, xaxt="n")
axis.Date(1, at=seq(as.Date("2001/1/1"), max(random.dates)+6, "weeks"))
axis.Date(1, at=seq(as.Date("2001/1/1"), max(random.dates)+6, "days"),
          labels = FALSE, tcl = -0.2)

, которая производит: enter image description here

Существует также Axis.Date(), который является универсальным S3, поэтому может вызываться через Axis(dates.vec, ....), где dates.vec - вектор дат по оси x. at и т.д. также могут быть указаны.

2 голосов
/ 26 февраля 2011

Вы можете сделать это вручную, если вы подавите аннотацию оси X в вызове plot(), а затем используете axis() с указанными вручную точками и метками:

axis(1,at=axis.pos[axis.ind],labels=axis.txt[axis.ind])

, используя набориндексы axis.ind, которые выбирают из значений x и форматированных меток.Вы можете использовать strftime() для чего угодно, например, '%d %b' должен давать короткие дневные и удобочитаемые короткие месяцы, как в

R> strftime(Sys.Date(), "%d %b")
[1] "26 Feb"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...