r - 如何在 tmap 中共享多个地图的图例?
问题描述
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)
给我以下地图
所有作品都像宣传的那样,但是我试图tmap
在两张地图上强制使用相同的气泡大小..并且只绘制一个图例。怎么可能做到这一点?
解决方案
大小:您需要指定size.max
给两个变量共同引用。
图例:没有直接的方法——你不能将c(TRUE, FALSE)
向量传递给legend.size.show
,要么两者都有,要么都没有。您需要使用 custom 的解决方法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))
推荐阅读
- java - 2 使用 itext5 的带有图像的并行表
- python - Python 错误:FileNotFoundError:[Errno 2] 没有这样的文件或目录(read_csv 打开)
- reactjs - 我得到的反应重定向问题无法读取未定义的 setState
- c# - 如何从垃圾收集中停止 IPEndPoint.Serialize()
- c# - C# WinForms。获取所有键盘数据
- c++ - 查找 std::list 的中间元素
? - go - 将结构切片附加到另一个
- python - 有没有办法在命令提示符下运行两个 python 程序?
- json - 如何将 utf-8 设置为 csvtojscon?
- angular - Angular ReactiveForm 到模型映射