如何在tmap中为多个地图共享图例?

8

运行来自tmap库的示例代码:

library("tmap")
tmap_mode("plot")
data(NLD_muni)

tm_shape(NLD_muni) +
  tm_borders() +
  tm_bubbles(size = c("origin_native", "origin_non_west"), legend.size.is.portrait = TRUE)

给我以下地图

enter image description here

所有功能都按照广告所述正常工作,但我正在尝试强制tmap在两个地图上使用相同的气泡大小..并且只绘制一个图例。如何实现这一目标?
1个回答

6

大小:您需要指定size.max,以便为两个变量提供共同参照。

图例:没有直接的方法--您不能将c(TRUE, FALSE)向量传递给legend.size.show,它要么全部显示,要么全部不显示。您需要使用自定义grid的解决方法。

以下是代码:

library(grid)
library(tmap)
tmap_mode("plot")
data(NLD_muni)

max_size <- max(c(NLD_muni$origin_non_west, NLD_muni$origin_native))

nld_plot_native <- tm_shape(NLD_muni) +
  tm_borders() +
  tm_bubbles(
    size = "origin_native", 
    size.max = max_size, 
    legend.size.is.portrait = TRUE,
    legend.size.show = TRUE
  )

nld_plot_non_west <- tm_shape(NLD_muni) +
  tm_borders() +
  tm_bubbles(
    size = "origin_non_west", 
    size.max = max_size, 
    legend.size.is.portrait = TRUE,
    legend.size.show = FALSE
  )

grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
print(nld_plot_native, vp = viewport(layout.pos.col = 1))
print(nld_plot_non_west, vp = viewport(layout.pos.col = 2))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接