对齐网格()以绘制刻度线

时间:2017-02-02 18:55:33

标签: r plot

  

在绘图中添加刻度线(比默认值更多的刻度线)时,如何让grid()将网格与刻度线对齐?

plot(1:10,las=1,xaxp  = c(0, 10, 10),xlim=c(0,10), ylim=c(0,10))
grid(lwd=2, nx=10, ny=10)

enter image description here

尝试更改了xlim和网格中nx arg的不同数字(单元格数),但网格根本没有对齐。

相关,但未回答问题: Aligning grid lines in R, bReeze package

相关,并使用解决方法: Align grid with ticks

解决方法是最有效的选择吗?

4 个答案:

答案 0 :(得分:5)

您可以使用abline绘制网格。您可以使用h(对于水平线)和v(对于垂直线)指定网格的位置

#Plot
plot(1:10,las=1,xaxp  = c(0, 10, 10),xlim=c(0,10), ylim=c(0,10))
#Add horizontal grid  
abline(h = c(0,2,4,6,8,10), lty = 2, col = "grey")
#Add vertical grid
abline(v = 1:10,  lty = 2, col = "grey")

另一种解决方法是使用axis tck值为1的{​​{1}}。使用axis,您可以使用at

指定网格的位置
#Plot
plot(1:10,las=1,xaxp  = c(0, 10, 10),xlim=c(0,10), ylim=c(0,10))

#Add horizontal grid  
axis(2, at = c(0,2,4,6,8,10), tck = 1, lty = 2, col = "grey", labels = NA)

#Add vertical grid
axis(1, at = 1:10, tck = 1, lty = 2, col = "grey", labels = NA)

#Add box around plot
box()

enter image description here

答案 1 :(得分:5)

问题是网格在用户空间中放置了nx网格线,但是每边都增加了4%的额外空间。你可以控制这个。将xaxs="i", yaxs="i"添加到您的地块将关闭额外的空间。但是你的右上角将被切断,所以你需要改变xlim和ylim值并改变nx来匹配。最终代码是:

plot(1:10,las=1,xaxp  = c(0, 10, 10),xlim=c(0,11), ylim=c(0,11),
    xaxs="i", yaxs="i")
grid(lwd=2, nx=11, ny=11)

Gridded plot

答案 2 :(得分:1)

我会投票给出解决方法。因为如果你看看?grid的手册,它有这个声明,

  

"注意:如果需要更多微调,请使用'abline(h =。,v =。)'        直接"

答案 3 :(得分:1)

您问题的答案

在图上添加刻度(比默认值更多的刻度)时,如何获取grid()以使网格与刻度对齐?

是:

结合使用axis函数和plot来获得abline函数创建的x轴刻度位置

具体替换行

grid(lwd=2, nx=10, ny=10)

通过以下三行

x_ticks <- axis(1, 0:10, labels = FALSE)
grid(lwd = 2, ny = NULL, nx = NA)
abline(v = x_ticks, lwd = 2, lty = 3, col = "lightgray")

结果将是

enter image description here

您可以控制x刻度和y刻度,并摆脱grid函数。在这种情况下,三行应该是

x_ticks <- axis(1, 0:10, labels = FALSE)
y_ticks <- axis(2, labels = FALSE)
abline(v = x_ticks, h = y_ticks, lwd = 2, lty = 3, col = "lightgray")