0

我想为不同的群体和不同的个人制作一个带有连接线的散点图。我制作面板以我的组变量为条件,组以我的个人变量为条件。现在,我想在每个面板中添加图例(参见下面的代码)。在图中,我想在第一个面板中有 GRP==1 的个人传说,在第二个面板中有 GRP==2 的个人传说,依此类推。所有图例都位于它们所属面板的左上角。我该如何编码?

library(lattice)
mydata   <- data.frame(ID = rep(1: 20, each = 10),
                       GRP = rep(1: 4, each = 50), 
                       x = rep(0: 9, 20))
mydata$y <- 1.2 * mydata$GRP * mydata$x + 
            rnorm(nrow(mydata), sd = mydata$GRP)

xyplot(y~ x | factor(GRP), data = mydata,
     groups = ID,
     type = "b",
     as.table = T,
     layout = c(2, 2),
     panel = panel.superpose,
     panel.groups = function (x, y, ...) {
         panel.xyplot(x, y, ...)
     }
 )
4

1 回答 1

1

尝试这样的事情。请注意,subset 命令出现在 xyplot 的数据语句中。这是故意的。如果您将子集称为 xyplot 参数,则绘图将在每个绘图中显示所有 20 个标签。

library(lattice)
mydata <- data.frame(ID = rep(1:20, each = 10), GRP = rep(1:4, each = 50), x = rep(0:9, 20))
mydata$y <- 1.2 * mydata$GRP * mydata$x + rnorm(nrow(mydata), sd = mydata$GRP)

i=1; j=1
for(grp in 1:4) {
      a <- xyplot(y~x|factor(GRP), data=subset(mydata, GRP==grp),
                  groups = factor(ID),
                  type = "b",
                  auto.key=list(columns=4,space="inside")
                  )
  print(a, split=c(i,j,2,2), more=T)
  i=i+1; if(i>2){i=1;j=j+1} # basically, tell the plots which quadrant to go in
}
于 2013-10-23T02:32:44.550 回答