Подтвердить что ты не робот

Как рисовать сетки, используя abline(), которые находятся за данными?

Когда я рисую линии сетки на графике с использованием abline(), линии сетки нарисованы над данными.

Есть ли способ рисовать строки abline() за данными? Я чувствую, что это будет выглядеть лучше.

Пример:

x <- seq(0, 10)
y <- x
plot(x, y, col = 'red', type = 'o', lwd = 3, pch = 15)
abline(h = seq(0, 10, .5), col = 'lightgray', lty = 3)
abline(v = seq(0, 10, .5), col = 'lightgray', lty = 3)

Созданный сюжет имеет серые линии сетки, проходящие по данным (красная линия). Я бы хотел, чтобы красная линия была поверх серых линий.

4b9b3361

Ответ 1

Аргумент panel.first plot() может принимать список или вектор функций, чтобы вы могли нанести туда abline().

plot(1:4, panel.first = 
       c(abline(h = 1:4, lty = 2, col = 'grey') 
        ,abline(v = 1:4, lty = 2, col = 'grey')))

Ответ 2

Используйте plot(), чтобы настроить окно построения графика, но используйте type = "n", чтобы не создавать никаких данных. Затем выполните ваши вызовы abline() или используйте grid(), а затем постройте данные, используя любую низкоуровневую функцию (здесь points() отлично).

x <- seq(0, 10)
y <- x
plot(x, y, type = "n")
abline(h = seq(0, 10, .5), col = 'lightgray', lty = 3)
abline(v = seq(0, 10, .5), col = 'lightgray', lty = 3)
points(x, y, col = 'red', type = 'o', lwd = 3, pch = 15)

или

## using `grid()`
plot(x, y, type = "n")
grid()
points(x, y, col = 'red', type = 'o', lwd = 3, pch = 15)

Подробнее о том, как указать сетку в соответствии с вашей версией abline(), см. ?grid.

Ответ 3

Сначала создайте график с типом = "n", чтобы установить координаты. Затем поместите в линии сетки, затем зарисуйте снова с вашим обычным типом графика:

plot(x, y, col = 'red', type = 'n', lwd = 3, pch = 15)
abline(h = seq(0, 10, .5), col = 'lightgray', lty = 3)
abline(v = seq(0, 10, .5), col = 'lightgray', lty = 3)
par(new=TRUE)
plot(x, y, col = 'red', type = 'o', lwd = 3, pch = 15)

Я признаю, что я всегда считал, что имя для этого параметра par было "назад".

Ответ 4

Другим способом создания линий сетки является установка tck=1 при построении графика или в функции axis (вы все равно можете построить точки с помощью points после создания линий сетки.