gpt4 book ai didi

r - 当最后一行的面板数少于列数时 xyplot 底轴

转载 作者:行者123 更新时间:2023-12-02 02:30:25 26 4
gpt4 key购买 nike

考虑一个具有 relation='fixed'alternating=FALSEas.table=TRUE< 的晶格 xyplot/

如果最后一行面板不完整(即面板数量少于布局的列数量),则不会绘制 x 轴。例如,下图中的面板 4 没有 x 轴刻度/标签。

library(lattice)
d <- data.frame(x=runif(100), y=runif(100), grp=gl(5, 20))
xyplot(y~x|grp, d, as.table=TRUE, scales=list(alternating=FALSE, tck=c(1, 0)))

enter image description here

如何添加该轴?

理想情况下,我只希望轴位于底部和左侧,并且不完整的面板行位于底部(与使用 as.table=FALSE 时不同,它在顶部绘制不完整的行)。对于上面的示例,我希望将轴绘制在面板 4 的底部边框上,而不是与面板 5 的 x 轴一致。

我知道这很容易解决,例如使用基本图形方法。我对晶格解决方案特别感兴趣。

最佳答案

我不是格子专家,但我相信这可能有效。这个想法最初发布于here 。首先我将重新生成示例:

library(lattice)
set.seed(1)
d <- data.frame(x=runif(100), y=runif(100), grp=gl(5, 20))

接下来,让我们定义一个控制面板设置的函数:

trellis.par.set(clip = list(panel = "off"))
myPan <- function(...){
panel.xyplot(...)
if(panel.number() == 4) {
at = seq(0,1,by = 0.2)
panel.axis("bottom", at = at, outside = T,
labels = T, half = F)
}
if(panel.number() == 5) {
at = seq(0,1,by = 0.2)
panel.axis("bottom",at = at, outside = T,
labels = T, half = F)
}
}

现在剧情:

xyplot(y~x|grp, d, as.table=TRUE, 
scales = list(
x = list(draw = F, relation="same"),
y = list(tck=c(1,0), alternating=F)),
layout = c(2,3),
panel = myPan)

可以看出,在xyplot命令中,我们要求不要绘制x轴(​​draw = F),但后来面板调用myPan 功能。我们特别要求为面板 4 和 5 绘制 x 轴。

输出

enter image description here

希望能给您一些改进的方向。

关于r - 当最后一行的面板数少于列数时 xyplot 底轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com