如何在R中从USAboundaries提取新墨西哥州边界并优化Tmap绘图
解决Tmap绘制土壤采样点显示在地图角落的问题
要让土壤采样点正确显示在新墨西哥州地图上,核心是获取新墨西哥州的边界数据并将其作为底图,让地图自动聚焦到该州范围。以下是修正后的代码及说明:
关键修改点
- 使用
USAboundaries包提取新墨西哥州的边界数据 - 将州地图作为底图,确保采样点处于地图中心区域
- 保持坐标系统统一(CRS 4326)
修正后的R代码
library(tmap) library(maps) library(sf) library(USAboundaries) # 读取土壤采样点数据 data <- read.csv("SoilPit_Locations___.csv") # 转换为sf空间对象,指定WGS84坐标系统(CRS 4326) points <- st_as_sf(data, coords = c("Longitude", "Latitude"), crs = 4326) # 获取美国各州边界并筛选出新墨西哥州(New Mexico,缩写NM) nm_state <- us_states() %>% filter(state_abbr == "NM") # 设置绘图模式与样式 tmap_mode("plot") tmap_style("natural") # 绘制新墨西哥州底图 + 采样点 m <- tm_shape(nm_state) + tm_polygons(fill = "lightgreen", border = "black", lwd = 0.5) + # 州填充与边框 tm_shape(points) + tm_dots(col = "red", size = 0.5) # 采样点样式 # 显示地图 m # 保存地图 tmap_save(m, "my_mapp.png")
说明
us_states()函数会返回美国所有州的边界sf对象,通过filter(state_abbr == "NM")精准筛选出新墨西哥州- 先绘制州底图,tmap会自动将地图范围适配到该州的边界,采样点自然会处于地图中心区域,不会再出现在角落
- 可根据需求调整
tm_polygons的填充色、tm_dots的颜色和大小,优化可视化效果
内容的提问来源于stack exchange,提问作者nohemi valenzuela
相关产品推荐
相关产品推荐

