Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggmap绘制城市各部分的多幅平面地图_R_Ggplot2_Ggmap_Rgooglemaps - Fatal编程技术网

R 使用ggmap绘制城市各部分的多幅平面地图

R 使用ggmap绘制城市各部分的多幅平面地图,r,ggplot2,ggmap,rgooglemaps,R,Ggplot2,Ggmap,Rgooglemaps,如中所述,我可以通过刻面实现这一点。但我想绘制一系列地图,围绕城市的特定缩放区域展开。如果我查看使用geocode()函数获得的城市坐标,大致计算出需要从视图两侧的经度/纬度中减去或添加什么,这是可以实现的。这样的解决方案远非理想。让我用一个例子来说明(注意:multiplot函数使用自) 库(ggmap) 图书馆(RgoogleMaps) #获取布里斯托尔横向/纵向 BRS从代码开始: library(ggmap) library(RgoogleMaps) #getting Bristol

如中所述,我可以通过刻面实现这一点。但我想绘制一系列地图,围绕城市的特定缩放区域展开。如果我查看使用
geocode()
函数获得的城市坐标,大致计算出需要从视图两侧的经度/纬度中减去或添加什么,这是可以实现的。这样的解决方案远非理想。让我用一个例子来说明(注意:
multiplot
函数使用自)

库(ggmap)
图书馆(RgoogleMaps)
#获取布里斯托尔横向/纵向

BRS从代码开始:

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))
然后将其倍数添加到BRS坐标中

BristolRight = ggmap(get_map(c(lon = BRS$lon + z15width["lon"],
                               lat = BRS$lat), zoom = 15))
这些应该排得很整齐

multiplot(BristolMapCenter, BristolRight, cols = 2)


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

我不确定是否理解您的目标。您需要显示城市不同区域的多张地图。如果地图直接相邻绘制,会很好地“排列”起来吗?或者您是否希望像您的示例中那样有一定程度的重叠?你真的想要一张切成小方块的大地图吗?@Gregor我想要多张地图,显示一个城市的不同区域,这些区域“排列”在一起,没有重叠。而且,为了清楚起见,为什么不只使用一张大地图?@Gregor,因为我想在这些地图的顶部绘制数据,并且我希望能够灵活地调整缩放级别,以创建各种版本的“多重映射平移”。例如,我会有一系列的倍数,用
zoom=10
,还有一个更精细的倍数,用
zoom=15
。我还希望在每次乘法运算中添加的数据类型具有灵活性,即某些数据仅出现在选定的乘法运算中。
BristolRight = ggmap(get_map(c(lon = BRS$lon + z15width["lon"],
                               lat = BRS$lat), zoom = 15))
multiplot(BristolMapCenter, BristolRight, cols = 2)