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 中缺少右刻度线的主要内容,如果未能解决你的问题,请参考以下文章