R晶格水平图 - 在同一比例下将许多图与一个颜色键组合在一起

时间:2014-10-07 01:31:44

标签: r lattice

我正在尝试使用一个组合颜色键绘制一个3x3网格的水平图,它们都在相同的色标上。

我找到了latticeExtra,并且能够使用c标记覆盖trellis并将merge.legends个对象组合在一起。但是,当我这样做时,我会得到多个颜色键。

是一幅只有三幅情节的照片。 Here 以下是我执行此操作的代码:

t1 <- levelplot(counts[[1]], main="", col.regions=colorRampPalette(c("white","red"))(256))
t2 <- levelplot(counts[[2]], main="", col.regions=colorRampPalette(c("white","red"))(256))
t3 <-  levelplot(counts[[3]], main="", col.regions=colorRampPalette(c("white","red"))(256))

plots <- c(t1, t2, t3, merge.legends=T)
print(plots)

我还希望不必手动使每个trellis对象成为自己的变量,而是列表的成员:

plots <- list()
for (i in 1:length(counts)){
  if (i %% 3 == 0) {
    plots[[i]] <- levelplot(counts[[i]], main="", col.regions=colorRampPalette(c("white","red"))(256))
  }
}
plots <- c(unlist(plots), merge.legends=T)

但是当我尝试这样做时,c函数似乎没有被正确覆盖。我尝试过不使用unlist,并将plots设为向量,但它们无效。

1 个答案:

答案 0 :(得分:3)

请注意,merge.legends = TRUE会在每个情节中产生单独的图例。如果您想使用c.trellis合并单个图例,则必须设置merge.legends = FALSE(有点违反直觉,我知道......)。基于?c.trellis的水平图示例:

# Levelplot
levObj <- levelplot(prop.table(WorldPhones, 1) * 100)

# Combination via `c.trellis`
comb_levObj <- c(levObj, levObj, layout = c(1, 2), merge.legends = FALSE)
print(comb_levObj)

c.trellis