Ответ 1
Вы можете либо пометить ось самостоятельно, либо получить R, чтобы сделать это для вас, создав вектор дат для ваших наблюдений, используя класс "Date"
. Вот пример:
f <- c(2,1,5,4,8,9,5,2,1,4,7)
dates <- seq(as.Date("04/01/2012", format = "%d/%m/%Y"),
by = "days", length = length(f))
plot(dates, f)
dates
заканчивается:
> dates
[1] "2012-01-04" "2012-01-05" "2012-01-06" "2012-01-07" "2012-01-08"
[6] "2012-01-09" "2012-01-10" "2012-01-11" "2012-01-12" "2012-01-13"
[11] "2012-01-14"
и график выглядит следующим образом:
Если вам нужно больше управления и что метки точно так же, как у вас есть, вам нужно подавить рисование оси x, а затем добавить его вручную, используя axis.Date
, например.
plot(dates, f, xaxt = "n")
axis.Date(side = 1, dates, format = "%d/%m/%Y")
который производит
Вы также можете повернуть эти метки оси, например, используя las = 2
.
Подробнее см. ?axis.Date
, ?strftime
и ?as.Date
.
Более тонкое управление размещением меток с помощью axis.Date
Чтобы переопределить эвристику по умолчанию для размещения меток, укажите местоположения для тиков, используя аргумент at
. Например, с более длинной последовательностью в 700 дней мы можем помещать метки в начале каждого месяца:
set.seed(53)
f <- rnorm(700, 2)
dates <- seq(as.Date("04/01/2012", format = "%d/%m/%Y"),
by = "days", length = length(f))
head(f)
Заговор немного более активен, но не намного
op <- par(mar = c(7,4,4,2) + 0.1) ## more space for the labels
plot(dates, f, xaxt = "n", ann = FALSE)
labDates <- seq(as.Date("01/01/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "months")
axis.Date(side = 1, dates, at = labDates, format = "%b %y", las = 2)
title(ylab = "f") ## draw the axis labels
title(xlab = "dates", line = 5) ## push this one down a bit in larger margin
par(op) ## reset margin
Это приводит к:
Вы можете изменить эту тему, например. этикетка раз в два месяца, незначительный тик для других месяцев
op <- par(mar = c(7,4,4,2) + 0.1) ## more space for the labels
plot(dates, f, xaxt = "n", ann = FALSE)
labDates <- seq(as.Date("01/01/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "2 months")
## new dates for minor ticks
minor <- seq(as.Date("01/02/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "2 months")
axis.Date(side = 1, dates, at = labDates, format = "%b %y", las = 2)
## add minor ticks with no labels, shorter tick length
axis.Date(side = 1, dates, at = minor, labels = FALSE, tcl = -0.25)
title(ylab = "f") ## draw the axis labels
title(xlab = "dates", line = 5) ## push this one down a bit in larger margin
par(op) ## reset margin
что приводит к
Дело в том, что если вам не нравятся значения по умолчанию, у вас есть полный контроль над тем, где обозначена ось, просто создав вектор дат для местоположений меток/тиков, которые вы хотите.