Как указать фактические значения оси 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. Я просмотрел бесчисленные блоги и краткое руководство - после нескольких часов поиска ближайший я пришел найти что-нибудь полезное - это следующие (обобщенные) инструкции:

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

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

Ответ 1

Вы найдете ответ на свой вопрос на странице справки для ?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 для поворота меток.

Ответ 2

Познакомьтесь с документацией ?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, и первая ссылка, которую вы получите, - это страница Quick R, о которой я упоминал ранее. Прокрутите вниз до "Оси", и вы получите очень хороший маленький путеводитель о том, как это сделать. Вероятно, вы должны сначала проверить их на какие-либо вопросы, связанные с построением, это будет быстрее, чем ждать ответа SO.

Ответ 3

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

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

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