Изменить расстояние между делениями на оси графика?
Как я могу изменить расстояние между делениями на оси графика?
какие параметры я должен использовать с базовым участком или с rgl
?
5 ответов:
есть по крайней мере два способа для достижения этого в базовый граф (мои примеры для оси x, но работают одинаково для оси y):
использовать
par(xaxp = c(x1, x2, n))
илиplot(..., xaxp = c(x1, x2, n))
для определения позиции (x1
&x2
) крайних делений и количества интервалов между делениями (n
). Соответственно,n+1
- количество нарисованных делений. (Это работает только в том случае, если вы не используете логарифмическую шкалу, для поведения с логарифмической шкалой весы см?par
.)вы можете полностью подавить рисование оси и добавить деления позже с помощью
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
и мой обновленный ответ на пост о статистике.stackexchange для примера этого метода.
С базовой графикой самый простой способ-остановить функции построения от рисования осей, а затем нарисовать их самостоятельно.
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()
у меня есть набор данных со временем как ось x и интенсивностью как ось 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 =...)
дает мне выбор пределов и приращений.
и если вы не хотите, чтобы R добавлял десятичные или нулевые числа, вы можете остановить его от рисования оси x или оси y или обоих ...акстись. Затем вы можете добавить свои собственные галочки и метки:
plot(x, y, xaxt="n") plot(x, y, yaxt="n") axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third"))
Я только что обнаружил Hmisc:
содержит множество функций, полезных для анализа данных, высокоуровневой графики, служебных операций, функций для вычисления размера выборки и мощности, импорта и аннотирования наборов данных, вменения пропущенных значений, расширенного создания таблиц, кластеризации переменных, манипулирования символьными строками, преобразования объектов R в код LaTeX и html и перекодирования переменных.
library(Hmisc) plot(...) minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th