【问题标题】:Missing right tick marks in R latticeExtra c.trellisR latticeExtra c.trellis 中缺少右刻度线
【发布时间】:2019-12-25 23:40:21
【问题描述】:

当使用latticeExtra:::c.trellis 组合绘图时,右侧的刻度线和文本/数字标签丢失了,我想把它们带回来:

library(latticeExtra)

set.seed(1)
foo <- data.frame(x = 1:100, 
                  y = 1:100 + rnorm(100))
foo$resid <- with(foo, x-y)

## Plot 1 -----
(p1 <- xyplot(y~x, foo))

## Plot 2 -----
(p2 <- 
    xyplot(resid~x, foo, 
           scales = list(rot = 0, tck = c(1,1), alternating = 3),
           between = list(y = 1), ylab.right = "ylab.right", 
           # par.settings = list(axis.components = 
           #                       list(right = list(pad1 = 2, pad2 = 2)))
           # Note: this padding attempt does not restore the missing ticks,
           # pad arguments get ignored when using c.trellis below
           ))
# tick marks appear on all four sides (as desired)

## Combine -----
(p12 <- latticeExtra:::c.trellis(p2, p1,layout = c(1,2)))
# right tick marks are missing

有没有办法手动恢复右侧的刻度和/或标签,例如,通过修改组合的 trellis 对象?

【问题讨论】:

    标签: r lattice trellis


    【解决方案1】:

    来自帮助文件?c.trellis

    说明

    将多个格子对象的面板合并为一个。

    以后,

    请注意,组合来自不同类型地块的面板并不真正适合格子模型。情节的某些功能可能无法按预期工作。特别是,可能需要一些工作来显示或隐藏选定面板上的比例。下面给出一个例子。

    在我看来,您并没有真正尝试将面板组合成一个对象。您甚至可以使用between 进行分隔。相反,您正在尝试合并两个图。

    你可以使用print

    print(p1,split=c(1,1,1,2),more=TRUE)
    print(p2,split=c(1,2,1,2),more=FALSE)
    

    ?print.trellis

    【讨论】:

    • 几乎!现在的问题变成了对齐问题。运行print 版本时,x 轴不完全对齐,因为 y 轴标签的空间是自动分配的,并且因绘图而异:p1 限制从 0 到 100,这需要比 -2 到 + 更多的水平空间2 在 p2。因此,x 轴刻度线未对齐。使用 c.trellis 时它们会对齐。
    • 很公平。我想仍然“可能需要一些工作来显示或隐藏选定面板上的比例。”或者,如果您不需要 lattice,我已经在单个基础图中构建了您想要的组合图。
    • 再想一想:lattice 有助于调整边距以最适合,在基本图形中边距是固定的,默认情况下或使用 par(mar=c(...))。因此,使用par(mfrow=c(2,1)) 的两个基本图将对齐。 (而不是像我昨天提到的那样构建一个组合图。)
    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多