【问题标题】:R lattice levelplot - combine many plots together with one color key on same scaleR lattice levelplot - 将许多图与相同比例的一个颜色键组合在一起
【发布时间】:2014-10-07 01:31:44
【问题描述】:

我正在尝试使用一个组合颜色键绘制一个 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 设为向量,但它们不起作用。

【问题讨论】:

  • 你能提供一个可重现的例子吗?

标签: r lattice


【解决方案1】:

请注意,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)

【讨论】:

  • 知道如何让标签显示在图表的同一侧吗?
  • update(comb_levObj, scales = list(alternating = 1))。另见?xyplot
猜你喜欢
  • 2011-04-12
  • 1970-01-01
  • 2018-07-29
  • 2015-07-15
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多