Как указать фактические значения оси x для построения в виде тиков оси x в R


Я создаю график в R, и мне не нравятся значения оси x, построенные R.

например:

x <- seq(10,200,10)
y <- runif(x)

plot(x,y)

это строит график со следующими значениями на оси X:

50, 100, 150, 200

однако, я хочу построить 20 значений 10,20, 30 ... 200 хранится в переменной X, а значения x оси. Я просмотрел бесчисленные блоги и краткое руководство - после нескольких часов поиска, самое близкое, что я нашел, это следующее (кратко) инструкции:

  1. вызов plot() или par(), указывая аргумент xaxt='n'
  2. вызов axis() например axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)

я попробовал, и результирующий график не имел значений оси x вообще. Возможно ли, что кто-то там знает, как это сделать? Я не могу поверить, что никто никогда не пытался сделать это раньше.

4 51

4 ответа:

вы найдете ответ на свой вопрос на странице справки для ?axis.

вот один из примеров страницы справки, измененный с вашими данными:

Вариант 1: использовать xaxp чтобы определить метки оси

plot(x,y, xaxt="n")
axis(1, xaxp=c(10, 200, 19), las=2)

Вариант 2: Использовать at и seq() чтобы определить метки:

plot(x,y, xaxt="n")
axis(1, at = seq(10, 200, by = 10), las=2)

оба эти варианта дают одинаковую графику:

enter image description here


PS. Поскольку у вас есть большое количество ярлыков, вам придется используйте дополнительные аргументы, чтобы текст вписывался в сюжет. Я использую las для поворота надписи.

взгляните поближе на ?axis документация. Если вы посмотрите на описание labels аргумент, вы увидите, что это:

"a logical value specifying whether (numerical) annotations are 
to be made at the tickmarks,"

так, просто измените его на true, и вы получите свои метки.

x <- seq(10,200,10)
y <- runif(x)
plot(x,y,xaxt='n')
axis(side = 1, at = x,labels = T)
# Since TRUE is the default for labels, you can just use axis(side=1,at=x)

будьте осторожны, что если вы не растянете ширину окна, то R не сможет записать все ваши метки. Играть с шириной окна, и вы увидите, что я имею в виду.


очень плохо, что у вас такие проблемы с поиском документация! Каковы были ваши условия поиска? Попробуйте ввести r axis в Google, и первая ссылка, которую вы получите, это быстрая страница R, о которой я упоминал ранее. Прокрутите вниз до "Axes", и вы получите очень хорошее небольшое руководство о том, как это сделать. Вы, вероятно, должны сначала проверить там любые вопросы построения графика, это будет быстрее, чем ждать ответа SO.

надеюсь, что это кодирование поможет вам:)

plot(x,y,xaxt = 'n')

axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))

в случае построения временного ряда, команда ts.plot требуется другой аргумент, чем xaxt="n"

require(graphics)
ts.plot(ldeaths, mdeaths, xlab="year", ylab="deaths", lty=c(1:2), gpars=list(xaxt="n"))
axis(1, at = seq(1974, 1980, by = 2))