#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 градусов, нам нужно освободить немного места сверху).