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

时间:2014-03-16 05:12:03

标签: 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)

我目前得到的是:

enter image description here

1 个答案:

答案 0 :(得分:3)

如果您希望在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)

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

enter image description here

panel.grid内部提到help(panel.grid)的限制:

  

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

     

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

(我强调的斜体)。

再皱一次

如果您已将转换应用于具有scale列表的轴,则必须将相同的转换应用于您提供给at的{​​{1}}向量 - 我不会&#39 ;我知道如何让它自动发生。