Как поместить перехват осей x и y в (0, 0) и расширить оси x и y до края графика
Предположим, что я хочу построить x^2
. Я могу использовать curve()
следующим образом.
curve(x^2, -5, 5)
Тем не менее, я хотел бы, чтобы оси проходили (0, 0). Я мог бы сделать что-то следующим образом:
curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0)
axis(2, pos=0)
abline(h=0)
abline(v=0)
И я получаю что-то вроде ниже, которое выглядит нормально. Но единственное, что у меня есть, это то, что этот способ построения осей делает фактические оси - например, сегмент между -4 и 4 оси х - толще сегментов в правой и левой частях. То же самое происходит с осью y. Интересно, есть ли лучший способ построения осей. Спасибо!
![enter image description here]()
Ответы
Ответ 1
По умолчанию ось() автоматически вычисляет положение меток, но вы можете определить их вручную с помощью аргумента at
. Таким обходным может быть что-то вроде:
curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=-5:5)
axis(2, pos=0)
Что дает:
![enter image description here]()
Проблема заключается в том, что вам нужно вручную определить положение каждой отметки. Немного лучше было бы вычислить их с помощью функции axTicks
(той, которая была использована по умолчанию), но вызвала это с помощью настраиваемого аргумента axp
, который позволяет указать соответственно минимальный, максимальный и количество интервалов для тиков по оси:
curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=axTicks(1,axp=c(-10,10,10)))
axis(2, pos=0)
Что дает:
![enter image description here]()
Ответ 2
Аргументы yaxs
и xaxs
управляют расстоянием между графиками. Установите "i"
, чтобы опустить это:
curve(x^2, -5, 5, yaxs = "i")
Смотрите также: fooobar.com/info/208667/...