我意识到这可能更像是一个数据框问题,而不是一个xyplot问题 - 但是它就是这样。 我有一个数据帧数据,有108行和5列。 dat $治疗是5个级别的因素。我想创建一个xy图,只包含dat $ Treatment ==“Control”的数据。由于我不知道有什么更好的方法,我创建了tmp,如下所示。 xyplot绘制正确的图形,仅包含dat $ Treatment ==“Control”行中的数据。但是图例会显示所有数据,例如dat $ Treatment ==“High dose”
auto.key从哪里获取?我以为我的tmp数据框架甚至没有它。有人可以帮我理解吗?
tmp <- dat[dat$Treatment=="Control",]
xyplot(tmp[,5] ~ Day, groups=tmp$Animal, data=tmp,
type="b", ylab="Tumor volume",
par.settings=simpleTheme(col=1:8,
pch=20,
cex=1.3,
lwd=2,
lty="dotted"),
auto.key=list(title="Animal", x=.05, y=.95,
corner=c(0,1), border=T, lines=T, points=F, type="b"))
答案 0 :(得分:0)
我对格子包不太熟悉,所以其他经验丰富的人将不得不权衡。我的猜测是你看到这种行为是因为R处理dat $ Treatment。我猜这个变量存储为一个因子,你不想在图中包含这些级别。作为粗略的第一步,我会尝试保存新数据框(如您所愿),但另外运行以下命令:
tmp$Treatment = as.factor(as.character(tmp$Treatment))
这应该将Treatment变量保存为只有一个级别的因子。我的猜测是xyplot函数在绘制时会查找该因子的级别。作为相关示例,请考虑以下事项:
data(iris)
iris.2 = iris[iris$Species == "setosa",]
table(iris.2$Species)
iris.2$Species = factor(as.character(iris.2$Species))
table(iris.2$Species)
这里,两个表的报告方式不同,因为我们已将Species变量重新保存为新因子。希望这会有所帮助 -
答案 1 :(得分:0)
auto.key从因子变量的级别获取其值。当您对因子变量进行子集化时,将维护所有级别(因此将来,您可以知道特定子集中缺少哪些级别)。如果要删除子集中未使用的级别,可以使用
tmp <- droplevels(dat[dat$Treatment=="Control",])
这样auto.key永远不会看到其他因素水平。