如何使用数据后面的abline()绘制网格线?

时间:2011-08-31 21:36:04

标签: r plot

当我使用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)

生成的图表有灰色网格线越过数据(红线)。我希望红线位于灰线之上。

4 个答案:

答案 0 :(得分:39)

panel.first的{​​{1}}参数可以带有一个列表或函数向量,这样您就可以将plot()个调用放在那里。

abline()

答案 1 :(得分:16)

使用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)

有关如何根据?grid版本指定网格的详细信息,请参阅abline()

答案 2 :(得分:8)

首先使用type =“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参数的名称是“倒退”。

答案 3 :(得分:1)

创建网格线的另一种方法是在绘图时或tck=1函数中设置axis(您可能仍希望在创建网格线后使用points绘制点。< / p>