ggmap 改变地图大小

Posted

技术标签:

【中文标题】ggmap 改变地图大小【英文标题】:ggmap changing size of map 【发布时间】:2015-03-10 23:51:50 【问题描述】:

我想创建一个不是完全正方形而是矩形的地图,并且是我指定的大小。

require(ggmap)
tenmile <- get_map(location = c(lon = -122.486328, lat = 48.862813),
    color = "color",
    source = "google",
    maptype = "roadmap",
    zoom = 12)
tenmile.map <- ggmap(tenmile, 
    extent = "device",
    ylab = "Latitude",
    xlab = "Longitude")+ggtitle("GEOMean for Data from Oct 2013-Nov 2014")
tenmile.map + geom_point(data=pp, aes(x=lon, y=lat, size=geomean), color="red", alpha=0.5) +      
geom_text(data=pp, aes(x=lon, y=lat, label = site), size=3, vjust = 1.25, hjust = -0.1)

我会发布我得到的东西和我想要的东西的图片,但我没有足够的声望点来发布图片。 =-(

【问题讨论】:

ggmap 好像没有do non-square maps,但也许你可以得到一张更大的地图,crop the image 和use it as a background。我猜对齐坐标会很痛苦,maybe here。 【参考方案1】:

Sandy Muspratt 的答案生成了一个矩形地图,但它被拉伸了。要获得未拉伸的地图,必须将比率调整为地图所在位置的纬线和经线间距之间的比率。那就是:

比率 = 1/cos(纬度)

如果纬度以度为单位,则变为:

比率 = 1/cos(pi*latitude/180)

我在这里举一个使用巴塞罗那地图的例子(巴塞罗那是一个很好的例子来检查拉伸,因为我们的大多数街道形成一个方形网格,变形变得很容易注意到)。

library(ggmap) library(mapproj) mapbcn <- get_map(location =
  'Barcelona, Catalonia', zoom = 13)

# square map (default) ggmap(mapbcn)

# map cropped by latitude 
ggmap(mapbcn) +                
  coord_fixed(ylim=c(41.36,41.41), 
              ratio=1/cos(pi*41.39/180))

# map cropped by longitude 
ggmap(mapbcn) +    
  coord_fixed(xlim=c(2.14, 2.18), 
              ratio=1/cos(pi*41.39/180))

必须注意,如果地图的面积足够小而无法考虑地球的曲率,那么这种方式坐标将继续在整个地图上工作(例如向地图添加点)——也就是说,假设经线在地图所示区域内平行。在跨越数百公里的地图中可能不准确,而在大陆比例尺的地图中则非常错误。

【讨论】:

【参考方案2】:

如果您想保持边界框的原始限制而只是改变其形状,您可以调整纵横比。如果要更改边界框的范围,请像以前一样获取地图,但使用coord_fixed()(或coord_cartesian())设置其范围。或者,您可以同时调整纵横比和边界框的限制。

tenmile <- get_map(location = c(lon = -122.486328, lat = 48.862813),
  color = "color",
  source = "google",
  maptype = "roadmap",
  zoom = 12)
tenmile.map <- ggmap(tenmile, 
  ylab = "Latitude",
  xlab = "Longitude")+ggtitle("GEOMean for Data from Oct 2013-Nov 2014") +
  coord_fixed(xlim = c(-122.55, -122.40), ratio = 2/1)

【讨论】:

感谢代码桑迪,但我无法让它工作。 抱歉,错过了您的评论。您需要解释您期望地图的外观。我得到一张不是正方形的地图。

以上是关于ggmap 改变地图大小的主要内容,如果未能解决你的问题,请参考以下文章

ggmap 地图上带有圆圈的数据可视化

在 ggmap 和 ggplot2 中为英国绘制地图

在ggmap中使用“register_google”注册谷歌地图API的问题

如何将 geom_sf 生成的地图放在 ggmap 生成的栅格之上

将 ggmap crs 与 geom_sf 对齐并使用 coord_sf 应用地图限制时出现问题

ggmap 中的错误,“必须是数组”和“HTTP 400 错误请求”