R语言ggmap指定缩放级别下地图无法铺满画布问题求助
解决ggmap地图缩小且居中的问题
你的问题出在先获取小范围地图再强行裁剪缩放的操作上:你先用get_map获取了德黑兰中心、zoom14的局部地图,之后用scale_x/y_continuous限制经纬度范围,这相当于把原本的小地图图像拉伸/压缩到你指定的坐标范围里,所以地图会变小缩在画布中央。
正确的做法是直接让get_map获取你需要的完整经纬度范围的地图,而不是事后调整,具体步骤如下:
1. 按经纬度范围获取地图
把你想要的边界范围(左、下、右、上)作为location参数传给get_map,这样获取到的地图本身就是你需要的区域,不需要再额外裁剪:
# 直接指定经纬度边界获取地图 map <- get_map( location = c(left = 51, bottom = 35.45, right = 51.8, top = 35.85), source = "google" )
2. 加载地图并添加数据点
接下来直接用ggmap加载这个地图,然后添加你的数据点即可。这里注意aes里的颜色映射直接用列名decile(不要用c$decile,这不符合ggplot的语法规范):
ggmap(map) + geom_point( aes(x = lon, y = lat, color = decile), data = c, alpha = 0.4, size = 3 )
额外提示
- 如果使用Google地图时遇到权限报错,需要先注册并设置Google Maps API密钥:
register_google(key = "你的API密钥") - 如果你还是想通过中心坐标+zoom的方式获取地图,需要调整
zoom参数到合适的级别,确保能覆盖你要的经纬度范围,但直接指定边界的方式更精准可控。
内容的提问来源于stack exchange,提问作者mjoudy
相关产品推荐
相关产品推荐

