【问题标题】:ggmap changing size of mapggmap 改变地图大小
【发布时间】: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)

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

【问题讨论】:

标签: r ggmap


【解决方案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)
    

    【讨论】:

    • 感谢代码桑迪,但我无法让它工作。
    • 抱歉,错过了您的评论。您需要解释您期望地图的外观。我得到一张不是正方形的地图。
    猜你喜欢
    • 2022-01-10
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多