我试图为 xyplot 中每个面板的 y 轴指定不同的限制,但结果与不同的数据子集不一致。
当我用两个不同的分组变量定义面板切片并且一个或多个子组没有数据值时,就会出现问题。
似乎 xyplot 正在跳过没有数据的面板的轴准备。
这是一个例子:
library(lattice)
df1<-data.frame(
x=rep(1, 4),y=rep(1, 4), cat1=c('A','B','A','B'), cat2=c('1','1','2','2'))
df2<-data.frame(
x=rep(1, 3),y=rep(1, 3), cat1=c('A','B','A'), cat2=c('1','2','1'))
myFun <- function(df) {
print(
xyplot(y ~ x | cat1 * cat2,
data=df,
scales=list(
y=list(
relation='free',
limits=rep(list(c(0,10), c(-100,10)) , 2)))
) )
}
myFun(df1)
myFun(df2)
df1 有每个子组的可用数据,而 df2 没有。当我调用 myFun(df1) 时,它按预期工作,但 myFun(df2) 会引发以下错误。
> myFun(df2)
Warning message:
In limitsFromLimitlist(have.lim = have.ylim, lim = ylim, relation = y.relation, :
number of items to replace is not a multiple of replacement length
我希望我的函数适用于原始数据框的任何子集,因此一个或多个子组很可能没有数据值。
如果子组没有数据值,我仍然希望看到具有正确限制的 y 轴。
关于如何实现这一目标的任何想法?