我正在尝试使用一个组合颜色键绘制一个3x3网格的水平图,它们都在相同的色标上。
我找到了latticeExtra
,并且能够使用c
标记覆盖trellis
并将merge.legends
个对象组合在一起。但是,当我这样做时,我会得到多个颜色键。
是一幅只有三幅情节的照片。 以下是我执行此操作的代码:
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
设为向量,但它们无效。
答案 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)