我可以实现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 '%@%'.
你可以看到这远非理想,因为总体来说(我不想重叠,我想要“排队延续”),如果不是说笨重,特别是如果我想要更大的平移周边地区(比方说9-12个地图),为多个城市做,在它上面绘制一些数据,并且在我的生活中仍然有足够的时间来获取太阳上的品脱。所以我想知道是否有任何快速,时尚和自动的方式来获得基于特定中心坐标的那些平移地图?
答案 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)
你可以在任何正交方向上移动z15width
的整数倍,并且事情应该继续排列。当然,您可以在不同的缩放比例下获得不同的宽度。您可以编写一个脚本来计算许多不同缩放值的宽度,并将其存储在某处并稍后引用它。