Як я можу змінити інтервал позначок на осі ділянки?
Які параметри слід використовувати з базовим графіком чи з 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