You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用ggplot2和tigris实现分级统计图地图放大的异常问题

问题原因

你给coord_sf设置的xlim/ylim是经纬度(十进制度),但你的数据已经通过st_transform(26918)转换为UTM Zone 18N坐标系(单位是米),两种坐标系的数值范围完全不匹配,导致地图显示异常。

解决方案

有两种可行的修复方式:

方法1:使用UTM坐标系的米单位设置范围

先查看当前数据的坐标边界,获取米单位的范围值:

st_bbox(ny_data)

根据输出的边界值,调整xlim和ylim为对应米范围,示例代码:

ggplot(data=ny_data, aes(fill = estimate)) + 
  geom_sf(color = NA) + 
  coord_sf(xlim = c(585000, 595000), ylim = c(4495000, 4505000)) + # 替换为st_bbox输出的实际区间
  scale_fill_viridis_c(option = "magma") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

方法2:在coord_sf中指定经纬度坐标系

直接在coord_sf里添加crs = 4326参数,告诉ggplot你输入的是WGS84经纬度范围,它会自动转换为当前数据的UTM坐标系:

ggplot(data=ny_data, aes(fill = estimate)) + 
  geom_sf(color = NA) + 
  coord_sf(xlim = c(-74.05, -73.9), ylim = c(40.6, 40.85), crs = 4326) +
  scale_fill_viridis_c(option = "magma") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

内容的提问来源于stack exchange,提问作者t010010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:20:37