将网格线对齐到网格图形中的轴刻度

Ten*_*esh 5 r lattice

如果选择定制网格线,有没有办法对齐网格线?默认情况下,panel.grid(h = -1,v = -1)完成工作,但我想根据轴刻度细化网格.将h和v设置为轴刻度的负长度并不总是有效.

更新:下面是一个例子.我想实现水平网格线匹配y轴刻度.目前缺少一半的水平网格线.

library(lattice)

G <- cut(trees$Girth, seq(8, 22, by = 3))
p <- xyplot(Height ~ Volume | G, data = trees,
          scales = list(x = list(alternating = 3, at = seq(10, 60, by = 5)),
                        y = list(alternating = 3, at = seq(65, 85, by = 2.5))),
          panel = function(x, y, ...){
              panel.grid(v = -11, h = -9)
              panel.xyplot(x, y, ...)})
print(p)
Run Code Online (Sandbox Code Playgroud)

我目前得到的是:

在此输入图像描述

Thr*_*ton 6

如果您想在 返回的地方以外的地方打勾和网格线pretty,则不要使用panel.grid; 而是使用panel.abline, 与您的自定义at序列。

library(lattice)

G <- cut(trees$Girth, seq(8, 22, by = 3))
x.at = 5*(2:12)
y.at = 2.5*(26:34)
p <- xyplot(Height ~ Volume | G, data = trees,
          scales = list(x = list(alternating = 3, at = x.at),
                        y = list(alternating = 3, at = y.at)),
          panel = function(x, y, ...){
              panel.abline(v = x.at, h = y.at, col="lightgrey")
              panel.xyplot(x, y, ...)})
print(p)
Run Code Online (Sandbox Code Playgroud)

并且不要忘记将颜色设置为适当的浅色。

在此处输入图片说明

的限制在panel.grid下面提到help(panel.grid)

h, v
对于 panel.abline,这些是数字向量,分别给出要添加到绘图中的水平线和垂直线的位置,以原生坐标表示。

对于 panel.grid,这些通常指定要添加到图中的水平和垂直参考线的数量。或者,它们可以是负数。h=-1 和 v=-1 旨在使网格与轴标签对齐。这并不总是有效;实际发生的所有事情是使用漂亮来选择位置,这也是在最常见情况下选择标签位置的方式(但不是对于因子变量,例如)。h 和 v 可以是除 -1 之外的负数,在这种情况下,-h 和 -v(视情况而定)将作为漂亮的 n 参数提供。

(我用斜体表示强调)。

多一张皱纹

如果您已经对带有scale列表的轴应用了转换,则必须对at您提供的向量应用相同的转换panel.abline- 我不知道如何让这种情况自动发生。