我正在使用 R 编程语言。
我在这里遵循本教程( https://www.johnmackintosh.net/blog/2017-09-01-easy-maps-with-tmap/ )并尝试使用新数据集生成以下 map :
这是我正在使用的形状文件:
library(sf)
library(leaflet)
library(leafgl)
library(colourvalues)
library(leaflet.extras)
# built in shapefile
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>%
st_transform(st_crs(4326)) %>%
st_cast('POLYGON')
接下来,我向此 shapefile 添加了几个可用于绘图的变量:
nc$var1 = rnorm(length(nc$AREA), 1000, 100)
nc$var2 = rnorm(length(nc$AREA), 1000, 100)
nc$var3 = rnorm(length(nc$AREA), 1000, 100)
nc$var4 = rnorm(length(nc$AREA), 1000, 100)
nc$var5 = rnorm(length(nc$AREA), 1000, 100)
nc$var6 = rnorm(length(nc$AREA), 1000, 100)
nc$var7 = rnorm(length(nc$AREA), 1000, 100)
nc$var8 = rnorm(length(nc$AREA), 1000, 100)
最后,我尝试按照教程中的说明绘制这些 map :
library(tmap)
library(tmaptools)
library(viridis)
small_mult<- tm_shape(nc) +
tm_fill(col = c("var1","var2","var3","var4",
"var5","var6","var7","var8"),
palette = viridis(n = 5, direction = -1, option = "C"),
title=c("title var 1", "title var 2","title var 3","title var 4",
"title var 5","title var 6", "title var 7","title var 8"))
当我查看这段代码的输出时 - 我注意到以下事情:
- 在教程中,他们能够整齐地制作两行,每行四个图,但我的制作不均匀
- 图例似乎与 map 本身相交
- 字体太小
- map 似乎已“放大”
总的来说,与教程中的 map 相比,我制作的 map 总体质量分辨率似乎较低。
我是否错过了一些选项?有没有快速解决这个问题的方法?
谢谢!
最佳答案
这应该可以帮助您开始使用 tmap
中的一些选项来控制图例位置和文本大小。
我不确定 map “显示放大”是什么意思, map 看起来与预期的差不多(查看使用此数据集的其他 SO 示例)。
分辨率在我的显示器上看起来不错。
# expand the boundary box based on:
# https://stackoverflow.com/questions/60892033/how-do-you-position-the-title-and-legend-in-tmap
bbox_new <- st_bbox(nc) # current bounding box
xrange <- bbox_new$xmax - bbox_new$xmin # range of x values
yrange <- bbox_new$ymax - bbox_new$ymin # range of y values
bbox_new[1] <- bbox_new[1] - (0.25 * xrange) # xmin - left
bbox_new <- bbox_new |>
st_as_sfc()
small_mult <-
tm_shape(nc, bbox = bbox_new) +
tm_fill(col = c("var1","var2","var3","var4",
"var5","var6","var7","var8"),
palette = viridis(n = 5, direction = -1, option = "C"),
title=c("title var 1", "title var 2","title var 3","title var 4",
"title var 5","title var 6", "title var 7","title var 8")) +
tm_facets(ncol = 2)+
tm_layout(legend.position = c("left", "top"),
legend.title.size = 1.5,
legend.text.size = 0.75)
small_mult
创建于 2022 年 12 月 31 日 reprex v2.0.2
关于R:修改地理 map 的分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74968617/