R:修改地理 map 的分辨率

标签 r visualization

我正在使用 R 编程语言。

我在这里遵循本教程( https://www.johnmackintosh.net/blog/2017-09-01-easy-maps-with-tmap/ )并尝试使用新数据集生成以下 map :

enter image description here

这是我正在使用的形状文件:

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"))

当我查看这段代码的输出时 - 我注意到以下事情:

enter image description here

  • 在教程中,他们能够整齐地制作两行,每行四个图,但我的制作不均匀
  • 图例似乎与 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/

相关文章:

r - 在 R Shiny App 中呈现 R Markdown 文档时引用书目不起作用

R as.POSIXct(Sys.Date()) 提前一天返回日期

R - 使用多种事件类型计算自上次事件以来耗时

R:可视化大量群体之间的差异

actionscript-3 - 可视化大型 as3 项目的好方法是什么?

python - 从 pandas 中绘制时间线中的时间段

r - 使用逻辑表达式向量对 R 中的数据帧进行子集化

R 统计分布绘图

java - 快速排序可视化?

javascript - D3 图形的缩放问题,适当缩放比例(Y 轴,X 轴)