R使用ggplot为英国地方当局分级统计图添加点位位置异常求助
问题根源
你使用的英国地方行政区shapefile默认采用英国国家格网投影(EPSG:27700),坐标系单位为米;而你输入的点位是WGS84坐标系下的经纬度数据(单位为度,EPSG:4326),二者坐标系不统一,因此ggplot无法识别点位的正确空间位置,导致点位全部堆积在地图左下角。
解决方案
推荐优先统一将点位转换为和底图一致的投影,避免底图变形,操作代码如下:
# 加载依赖包(未安装的话先执行 install.packages(c("sf","dplyr")) 安装) library(sf) library(dplyr) library(ggplot2) # 构造点位数据并转换为和底图匹配的空间对象 sites <- data.frame(lat = c(54.7), long = c(-1.27)) %>% # 指定原始点位为WGS84经纬度坐标系 st_as_sf(coords = c("long", "lat"), crs = 4326) %>% # 转换为和底图完全一致的坐标系 st_transform(crs = st_crs(mymap)) # 绘图,统一使用geom_sf绘制空间对象 ggplot() + geom_sf(data = map_and_data, aes(fill = Fuel_Poverty), lwd = 0.1) + geom_sf(data = sites, size = 3, shape = 21, fill = "red") + theme_void() + scale_fill_gradient2(low = "#005abb", high = "#a50026", midpoint = 12, na.value = "#808080")
如果你需要叠加邮政编码点位,可以使用PostcodesioR包调用英国公共邮政编码接口,批量将邮政编码转换为经纬度后,再按上述步骤转换坐标系叠加即可。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

