在绘图中添加刻度线(比默认值更多的刻度线)时,如何让
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)
尝试更改了xlim
和网格中nx
arg的不同数字(单元格数),但网格根本没有对齐。
相关,但未回答问题: Aligning grid lines in R, bReeze package
相关,并使用解决方法: Align grid with ticks
解决方法是最有效的选择吗?
答案 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()
答案 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)
答案 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")
结果将是
您可以控制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")