R указание отметок по оси x для линейного графика

#r #plot #axis-labels

#r #сюжет #метки оси

Вопрос:

У меня есть некоторый временной ряд с 200 значениями, связанными с 200 различными временами в пределах интервала. После построения линейного графика я хотел бы вручную указать R показывать только тики по оси x для некоторых определенных значений, которые я указываю. Затем я хотел бы указать другое имя, то есть строку даты, которая будет отображаться на этих отметках вместо числового значения. Я посмотрел на axis(), но у меня возникли проблемы с объединением всего этого процесса. Я хочу, чтобы был нанесен весь линейный график, а не только метки x, которые я указываю.

Например: если у меня есть: y = c(227, 342, 121, 275, 354, 999, 221, 475, 867, 347, 541) x = c(1, 5, 10, 15, 20, 25, 30 ,35, 40, 45, 50)

Я хочу построить график (x, y, «l»), но с отметками по оси x только на c (10, 30, 40). Для этих отметок я хотел бы связать c («Март», «июнь», «Август») соответственно и использовать эти имена в качестве меток для этих трех отметок.

Ответ №1:

Вам нужно будет прибегнуть к ручному созданию оси. Это можно сделать, (1) отключив автоматическое создание оси (с xaxt='n' помощью in the call to plot ) и (2) выполнив пользовательский вызов axis функции.

Вот как я бы поступил:

 y = c(227, 342, 121, 275, 354, 999, 221, 475, 867, 347, 541)
x = c(1, 5, 10, 15, 20, 25, 30 ,35, 40, 45, 50)
plot(x, y, "l", xaxt='n')
axis(1,at=c(10,30,40),labels=c("March", "June", "August"))
 

В результате получается следующий график:

введите описание изображения здесь

Комментарии:

1. Это идеально, именно то, что я хотел. Просто продолжение, они все равно поворачивают метки по вертикали? Даты довольно длинные. Спасибо

2. да, вы можете использовать опцию las=2 в вызове axis .

3. И есть ли также способ поворачивать метки на пользовательский угол, например. 45 градусов?

4. @Wassermann в этом случае вы должны использовать text , поскольку только эта функция может использовать srt параметр для поворота текста. Для полного примера замените последнюю строку на эту: text(x=c(10,30,40), y=rep(par('usr')[3],3), labels=c("March", "June", "August"), srt=45,xpd=T, pos=1, offset=1)

5. Пояснение к вышесказанному: srt=45 означает «повернуть текст на 45 градусов» — y=rep(par('usr')[3],3) повторяет самую нижнюю координату графика три раза, чтобы знать, где расположены метки — xpd=T означает, что мы можем писать за пределами графического поля, в части оси — pos=1 означает, что мы расположим текст так, чтобы он был ниже выбранная координата и offset=1 означает, что мы будем смещать текст на один символ к низу (поскольку текст наклонен на 45 градусов, нам нужно освободить немного места сверху).