Як я можу змінити інтервал позначок на осі ділянки?
Які параметри слід використовувати з базовим графіком чи з rgl
?
Відповіді:
Існує щонайменше два шляхи досягнення цього в базовому графіку (мої приклади стосуються осі х, але однаково працюють для осі у):
Використовуйте 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 = вісь х, 2 = у-осі), v1
будучи вектор , що містить положення тиків (наприклад, c(1, 3, 5)
якщо ваш діапазон осі від 0 до 6 , і ви хочете три марки), і v2
вектор, що містить мітки для зазначених позначок (має бути такої ж довжини, як v1
, наприклад, c("group a", "group b", "group c")
). Див. ?axis
І мою оновлену відповідь на допис на stats.stackexchange для прикладу цього методу .
formatC
або prettyNum
для створення символьних векторів, яким потрібно передати labels
. Напр .:formatC(seq(0,2,0.5), digits = 1, format = "f")
n
це насправді кількість галочок-1
. Я хотів позначки від 1
до 9
і повинен був встановити, xaxp = c(1, 9, 8)
інакше я не отримав би бажаного результату.
par(xaxp..)
. Це працює лише тоді, коли я поміщаю його всерединуplot(xaxp...)
З базовою графікою найпростіший спосіб - зупинити графічні функції від малювання осей, а потім намалювати їх самостійно.
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()
las
у? Par, який можна додати до виклику axis()
та який керує орієнтацією міток. Напр axis(side = 1, at = c(1,5,10), las = 2)
. Можливо, вам доведеться дослідити, чи існує axis()
функція для об'єктів chron, або розглянути можливість використання класів дати R часу, які вже мають axis()
функції (наприклад, axis.Date()
для класу "" Дата "").
У мене є набір даних із часом як вісь х та інтенсивністю як вісь у. Спочатку мені потрібно видалити всі осі за замовчуванням, за винятком міток осей з:
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 або обох, використовуючи ... 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"))
flag
допомогою yaxt=flag
АЛЕ фокус полягає в тому, що якщо ви хочете увімкнути стандартні мітки, то встановіть, flag <- "s"
а якщо ви не хочете використовувати стандартні мітки flag <- "n"
(Додаючи це, тому що мені знадобився поки знайти "s")
Я щойно виявив пакет Hmisc :
Містить багато функцій, корисних для аналізу даних, графіки високого рівня, утилітних операцій, функцій для обчислення розміру та потужності вибірки, імпорту та анотування наборів даних, введення відсутніх значень, вдосконаленого створення таблиць, кластеризації змінних, маніпулювання рядками символів, перетворення об'єктів R у LaTeX і html-код, і перекодування змінних.
library(Hmisc)
plot(...)
minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th