R latticeExtra c.trellis 中缺少右刻度线

Posted

技术标签:

【中文标题】R latticeExtra c.trellis 中缺少右刻度线【英文标题】:Missing right tick marks in R 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 对象?

【问题讨论】:

【参考方案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)) 的两个基本图将对齐。 (而不是像我昨天提到的那样构建一个组合图。)

以上是关于R latticeExtra c.trellis 中缺少右刻度线的主要内容,如果未能解决你的问题,请参考以下文章

无法在IBM DSX R环境笔记本电脑上安装CRAN软件包“viridis”,“Hmisc”

用 ggplot2 再现晶格树状图

——R的数据组织

——R的数据组织

+-r, +-s 的所有排列

shinydashboard ui.R 和 server.R 未读取 Global.R