При рисовании оси для временных рядов мы обычно создаем метки и добавляем ось отдельно. Поскольку я должен построить много временных рядов, я попытался написать следующую функцию:Определение функции оси в R
Простой сюжет команды
set.seed(1)
x <- as.ts(rnorm(1:150))
plot <- plot(x, xaxt = "n", yaxt = "n")
Преобразовать набор команд из этого answer в функцию
tt = seq(as.Date("1994-03-01"), by="months", length=150)
tsAxis <- function (tt) {
ix <- seq_along(tt) # number of ticks
fmt <- "%b-%y" # format of time
labs <- format(tt, fmt) # names or labels of dates
axis(1, at = tt[ix], labels = labs[ix],
tcl = -0.7, cex.axis = 0.7, las = 2)
}
Тогда tsAxis (tt) должен нарисовать ось, но это не так, и нет ошибки. Даже написание команд отдельно не создает график.
Любые решения?
В вашей функции 'axis' попробуйте изменить параметр' at = tt [ix] 'на' at = ix'. Кажется, что R не имеет оси x в качестве формы даты, а как целые числа. – ialm
Спасибо. Теперь ось нарисована, но возникает другой вопрос. Если мы хотим только одну треть меток, 'ix <- seq (1, length (tt), 3)', то количество тиков и меток не совпадает. Как указать расположение тиков в этом случае? – Anusha
Вы пытались изменить строку 'ix <- seq_along (tt)' на 'ix <- seq (1, length (tt), 3)' и снова запустить код? Кажется, работает для меня. У меня есть 'axis (1, at = ix, labels = labs [ix], tcl = -0.7, cex.axis = 0.7, las = 2)' в функции 'tsAxis', которая, похоже, работает. – ialm