使用usmap和ggplot2绘制点时无数据点显示的问题求助
问题:使用plot_usmap绘制美国地图时数据点不显示但图例正常
我有一份包含经度(lon)、纬度(lat)和季度(quarter)列的Excel数据表,用以下代码绘制美国地图并添加数据点:
plot_usmap("states")+ labs(title="US Property Deletions by Quarter")+ geom_point(data = long_lats, aes(x=lat, y=lon, color=quarter), size = 1)
当前图例的季度分类显示正常,但数据表中的点完全没出现在地图上,求解决方法。
解决方案
- 修正坐标映射:
plot_usmap遵循标准经纬度映射逻辑,x对应经度(lon),y对应纬度(lat),你代码里的坐标参数写反了,这是最可能的原因。修正代码:
plot_usmap("states")+ labs(title="US Property Deletions by Quarter")+ geom_point(data = long_lats, aes(x=lon, y=lat, color=quarter), size = 1)
- 强制独立坐标系:
plot_usmap默认使用Albers Equal Area投影,若你的经纬度是WGS84(EPSG:4326),可在geom_point中添加inherit.aes = FALSE,避免继承地图的投影参数导致点偏移:
plot_usmap("states")+ labs(title="US Property Deletions by Quarter")+ geom_point(data = long_lats, aes(x=lon, y=lat, color=quarter), size = 1, inherit.aes = FALSE)
- 排查数据范围:检查经纬度是否在美国本土范围内(大致经度-125至-66,纬度25至49),异常值会被绘制在可视区域外。用以下命令查看数据分布:
summary(long_lats$lon) summary(long_lats$lat)
过滤掉超出范围的无效数据后再尝试绘图。
- 确认图层顺序:确保
geom_point在plot_usmap之后调用,保证点图层绘制在地图上方(当前代码已符合,可作为排查项)。
内容的提问来源于stack exchange,提问作者Ily
相关产品推荐
相关产品推荐

