Изменить интервал между отметками на оси графика? - PullRequest
73 голосов
/ 24 сентября 2010

Как изменить интервал между отметками на оси графика?

Какие параметры следует использовать с базовым графиком или с rgl?

Ответы [ 5 ]

87 голосов
/ 24 сентября 2010

Существует как минимум два способа добиться этого в базовый график (мои примеры приведены для оси x, но работают так же для оси y):

  1. Используйте par(xaxp = c(x1, x2, n)) или plot(..., xaxp = c(x1, x2, n)), чтобы определить положение (x1 & x2) крайних отметок и количество интервалов между отметками (n). Соответственно, n+1 - это количество сделанных отметок. (Это работает, только если вы не используете логарифмическую шкалу, для поведения с логарифмической шкалой см. ?par.)

  2. Вы можете полностью отключить рисование оси и добавить метки позже с помощью axis().
    Для подавления рисования оси используйте plot(... , xaxt = "n").
    Затем позвоните axis() с side, at и labels: axis(side = 1, at = v1, labels = v2). С side, относящимся к стороне оси (1 = ось x, 2 = ось y), v1 - вектор, содержащий положение тиков (например, c(1, 3, 5), если ваша ось колеблется от 0 до 6 и вам нужно три метки), и v2 вектор, содержащий метки для указанных меток (должен иметь длину, равную v1, например, c("group a", "group b", "group c")). См. ?axis и мой обновленный ответ на пост на stats.stackexchange для примера этого метода .

25 голосов
/ 24 сентября 2010

С базовой графикой самый простой способ - остановить функции построения графиков от осей рисования, а затем нарисовать их самостоятельно.

plot(1:10, 1:10, axes = FALSE)
axis(side = 1, at = c(1,5,10))
axis(side = 2, at = c(1,3,7,10))
box()
6 голосов
/ 02 января 2015

У меня есть набор данных с Time в качестве оси X и Intensity в качестве оси Y. Сначала мне нужно удалить все оси по умолчанию, кроме меток осей с помощью:

plot(Time,Intensity,axes=F)

Затем я перестраиваю элементы сюжета с помощью:

box() # create a wrap around the points plotted
axis(labels=NA,side=1,tck=-0.015,at=c(seq(from=0,to=1000,by=100))) # labels = NA prevents the creation of the numbers and tick marks, tck is how long the tick mark is.
axis(labels=NA,side=2,tck=-0.015)
axis(lwd=0,side=1,line=-0.4,at=c(seq(from=0,to=1000,by=100))) # lwd option sets the tick mark to 0 length because tck already takes care of the mark
axis(lwd=0,line=-0.4,side=2,las=1) # las changes the direction of the number labels to horizontal instead of vertical.

Итак, at = c(...) указывает набор позиций для установки отметок. Здесь я хотел бы поставить отметки на 0, 100, 200, ..., 1000. seq(from =...,to =...,by =...) дает мне выбор пределов и приращений.

3 голосов
/ 15 июля 2015

И если вы не хотите, чтобы R добавлял десятичные дроби или нули, вы можете помешать ему нарисовать ось x или y, или оба, используя ... axt. Затем вы можете добавить свои собственные галочки и метки:

plot(x, y, xaxt="n")
plot(x, y, yaxt="n")
axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third"))
2 голосов
/ 29 августа 2018

Я только что обнаружил пакет Hmisc :

Содержит множество функций, полезных для анализа данных, графики высокого уровня, служебных операций, функций для вычисления размера и мощности выборки, импортаи аннотирование наборов данных, вложение пропущенных значений, расширенное создание таблиц, кластеризация переменных, манипулирование символьными строками, преобразование объектов R в код LaTeX и html и перекодирование переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...