【发布时间】:2012-06-22 18:02:33
【问题描述】:
我正在尝试为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 轴具有正确的限制。
关于如何实现这一点的任何想法?
【问题讨论】: