网格线与轴上的刻度一致

时间:2011-11-10 15:26:58

标签: r graph gridlines

我很尴尬地问这个简单的问题,但是每当我创作一个情节时,我都会在脑海里挣扎几天:

plot (x = 1:10, y = rnorm (10, 5, 2))
grid (10,10, lty = 6, col = "cornsilk2")

我想将网格定位在标记轴的位置,即x轴为2,4,6,8,10,y轴为3,4,5,6,7,8。

enter image description here

我想在绘图大小更改默认标签行为更改时自动执行该过程。见下图:

enter image description here

4 个答案:

答案 0 :(得分:35)

来自?gridnx参数的ny描述:

  

当为NULL时,默认情况下,网格与标记上的刻度线对齐   相应的默认轴(即由axTicks计算的刻度线)

plot (x = 1:10, y = rnorm (10, 5, 2)) 
grid (NULL,NULL, lty = 6, col = "cornsilk2") 

答案 1 :(得分:20)

作为参考,如果我们没有定义自定义滴答间隔,有一种方法可以直接从plot()命令控制网格和轴参数:

plot(x = 1:10, y = rnorm(10, 5, 2), xlim=c(1, 10), ylim=c(1, 10), panel.first=grid())

plot.default()文档提供了有关这些参数的更多信息。

使用自定义刻度间隔时,最简单的方法是使用abline绘制网格:

plot(x = 1:10, y = rnorm(10, 5, 2), xaxp=c(1, 10, 10), yaxp=c(1, 10, 10), axes=FALSE)
axis(1, 1:10)
axis(2, 1:10)
abline(h=1:10, v=1:10, col="gray", lty=3)

grid example

有关this threadhere中网格对齐的自定义节拍间隔的详细信息。

答案 2 :(得分:5)

对于后人来说,这是一种冗长的手工方式:

plot (x = 1:10, y = rnorm (10, 5, 2))
grid (lty = 6, col = "cornsilk2")

xaxp <- par("xaxp")
yaxp <- par("yaxp")

abline(v=seq(xaxp[1], xaxp[2], (xaxp[2]-xaxp[1])/xaxp[3]), lty=6, col = "cornsilk2")
abline(h=seq(yaxp[1], yaxp[2], (yaxp[2]-yaxp[1])/yaxp[3]), lty=6, col = "cornsilk2")

答案 3 :(得分:1)

提供的答案here要简单明了,尽管你可能不喜欢轴两端缺少“自由空间”。简而言之,

  

问题是网格在用户空间中放置了nx网格线,   但情节是每侧增加4%的额外空间。你可以控制   这个的。在你的情节中添加xaxs="i", yaxs="i"会关闭   额外的空间。但是你的右上角将被切断,所以你   需要更改xlim和ylim值并更改nx以匹配