【问题标题】:Aligning grid lines to axis ticks in lattice graphics将网格线与点阵图形中的轴刻度对齐
【发布时间】:2014-03-16 05:12:02
【问题描述】:

如果选择自定义网格线,有没有办法对齐网格线? 默认情况下, 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)

我目前得到的是这样的:

【问题讨论】:

  • 发布一个示例问题和代码来构建格子图。

标签: r lattice


【解决方案1】:

如果您想要在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)

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

panel.grid 的限制在help(panel.grid) 中已深入提及:

h, v
对于 panel.abline,这些是数值向量,分别给出水平和垂直位置 要添加到绘图中的线,在本地坐标中。

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

(我的斜体表示强调)。

多了一道皱纹

如果您对带有scale 列表的轴应用了变换,则必须对提供给panel.ablineat 向量应用相同的变换 - 我不知道如何得到这个自动发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2018-08-03
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多