使用ggmap对城市各个部分进行多次平移地图

时间:2015-06-24 15:26:01

标签: r ggplot2 ggmap rgooglemaps

我可以实现Plotting multiple maps with ggmap,这也可以通过Kale & Wickham (2013) R Journal paper中描述的分面进行。但我想在城市的特定,缩放区域周围绘制一系列 pan 的地图。如果我查看使用geocode()函数获得的城市坐标并大致弄清楚我需要在视图的每一侧从经度/纬度中减去或添加什么,这是可以实现的。这种解决方案远非理想。让我举一个例子来说明(注意:multiplot使用的library(ggmap) library(RgoogleMaps) #getting Bristol lat/long BRS <- geocode("Bristol, UK") #get the first (central) map from the coordinates BristolMapCenter <- ggmap(get_map(c(lon=BRS$lon, lat=BRS$lat), zoom = 15)) #get the second map panned to the right by adding approx. 0.015 to longitude BristolMapRight <- ggmap(get_map(c(lon=BRS$lon+0.015, lat=BRS$lat),zoom = 15)) #multiplot function multiplot(BristolMapCenter, BristolMapRight, cols=2) 函数。)

SELECT * FROM `Careers` WHERE `Email` LIKE '%something%' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%gmail.com%' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%@%'.

enter image description here

你可以看到这远非理想,因为总体来说(我不想重叠,我想要“排队延续”),如果不是说笨重,特别是如果我想要更大的平移周边地区(比方说9-12个地图),为多个城市做,在它上面绘制一些数据,并且在我的生活中仍然有足够的时间来获取太阳上的品脱。所以我想知道是否有任何快速,时尚和自动的方式来获得基于特定中心坐标的那些平移地图?

1 个答案:

答案 0 :(得分:2)

从您的代码开始:

library(ggmap)
library(RgoogleMaps)

#getting Bristol lat/long
BRS <- geocode("Bristol, UK")

#get the first (central) map from the coordinates
BristolMapCenter <- ggmap(get_map(c(lon=BRS$lon, lat=BRS$lat), zoom = 15))

我们可以在此缩放级别提取地图所涵盖的绝对范围:

z15width = sapply(BristolMapCenter$data, function(x) abs(diff(range(x))))

然后将其倍数添加到您的BRS坐标。

BristolRight = ggmap(get_map(c(lon = BRS$lon + z15width["lon"],
                               lat = BRS$lat), zoom = 15))

这些应该很好地排列。

multiplot(BristolMapCenter, BristolRight, cols = 2)

enter image description here

你可以在任何正交方向上移动z15width的整数倍,并且事情应该继续排列。当然,您可以在不同的缩放比例下获得不同的宽度。您可以编写一个脚本来计算许多不同缩放值的宽度,并将其存储在某处并稍后引用它。