当我尝试通过x轴将图像图与xy图对齐时,x值之间存在小的不对齐。无法弄清楚如何摆脱它! 请注意底部图中的垂直线与顶部图中的x轴未对齐。
par(mfrow=c(2,1))
par(mar=c(0,5,5,5))
image(x=1:100,z=replicate(10, rnorm(100)))
par(mar=c(5,5,0,5))
par(xaxs="i")
plot(1:100,rnorm(100))
abline(v=1:100)
大师,帮忙!!谢谢!!
PS:无法弄清楚帖子“情节 - 时间 - 系列和图像在-r-so-that-x-axis-labels-up-up-perfect”,仍有问题!< / p>
答案 0 :(得分:1)
问题是image
将数据绘制为具有给定宽度的单元格网格。如果x
中image
的长度等于nrow(z)
,则它指定单元格的中点。在您的示例中,这为您提供了以1:100为中心的矩形,有效地导致x轴覆盖从0.5
到100.5
的范围,这给出了观察到的不对齐。
为了匹配两个图中的范围,您需要相应地指定xlim
到plot
。在下面的示例中,我使用n = 10
来使事情变得更加明显。
par(mfrow=c(2,1))
par(mar=c(0,5,5,5))
image(x=1:n,z=replicate(10, rnorm(n)))
par(mar=c(5,5,0,5))
par(xaxs="i")
plot(1:n,rnorm(n), xlim=c(.5,n+.5))
abline(v=1:n)
答案 1 :(得分:0)
好的,所以这是我过去可能想到的事情之一,然后完全忘记了。 诀窍不仅是调用par(xaxs =“i”)而且还强制执行两个xlims!
par(mfrow=c(2,1))
par(mar=c(0,5,5,5))
image(x=1:100,z=replicate(10, rnorm(100)),xlim=c(0,100))
par(mar=c(5,5,0,5))
par(xaxs="i")
plot(1:100,rnorm(100),xlim=c(0,100))
abline(v=1:100)