将网格与刻度线对齐

Align grid with ticks

当我让plot draw the axis, grid aligns with ticks by default.

不过我的剧情有点牵强:

mytime <- as.POSIXct("2015-08-20") + seq(0,by=3600,length.out=7*24)
plot(x=mytime,y=rnorm(7*24),xaxt="n")
ticks <- mytime[seq(1,by=12,to=length(mytime))]
axis(1, ticks, strftime(ticks, "%a %H:%M"))
grid(ny=NULL,nx=14)

我无法让 gridticks 对齐:

如何让它们对齐?

看起来 abline 是答案:

mytime <- as.POSIXct("2015-08-20") + seq(0,by=3600,length.out=7*24)
plot(x=mytime,y=rnorm(7*24),xaxt="n")
ticks <- c(mytime[seq(1,by=12,to=length(mytime))],mytime[1]+7*24*3600)
axis(1, ticks, strftime(ticks, "%a %H:%M"))
grid(ny=NULL,nx=NA)
abline(v=ticks[seq(1,length(ticks),2)],lty="dotted",col="lightgray")

正如上一个答案中所指出的,解决方案是使用 abline 函数并避免将垂直参考线绘制在错误的位置。您可以通过替换代码的最后一行来实现这两件事

grid(ny=NULL,nx=14)

来自

grid(ny=NULL,nx=NA)
abline(v = ticks, lty = 3, col = "lightgray")

获得

顺便说一句,之前有一些与此相关的问题可能对您有所帮助:

  1. R: Finding the location of tick marks when plotting dates