将网格与刻度线对齐

时间:2015-08-20 13:57:52

标签: r plot gridlines

当我plot绘制轴时,gridticks 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对齐:

grid and ticks do not align

如何使它们对齐?

2 个答案:

答案 0 :(得分:0)

看起来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")

enter image description here

答案 1 :(得分:0)

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

grid(ny=NULL,nx=14)

作者

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

获得

enter image description here

顺便说一下,以前与此相关的问题可以为您提供帮助:

  1. R: Finding the location of tick marks when plotting dates
  2. Align grid() to plot ticks