0

Kale & Wickham (2013) R Journal paperで説明されているように、ファセットでも可能であるggmap を使用して複数のマップをプロットすることができます。しかし、都市の特定のズーム領域をパンする複数の一連のマップをプロットしたいと考えています。これは、関数で取得した都市座標を見て、ビューのパンの両側の経度/緯度から何を減算または加算する必要があるかを大まかに把握すれば、ある程度達成可能です。このようなソリューションは、理想とはほど遠いものです。例を挙げて説明しましょう (注: Cookbook For Rから使用される関数)。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)

ここに画像の説明を入力

ご覧のとおり、これは全体的に理想とはほど遠いものです (オーバーラップはしたくないので、「並べて継続」したい)。たとえば、9 ~ 12 のマップを作成し、複数の都市でそれを実行し、その上にいくつかのデータをプロットします。それでも私の人生には、太陽の下でパイントをつかむのに十分な時間があります。特定の中心座標に基づいて、これらのパンされたマップを取得するための高速で洗練された自動の方法があるのだろうか?

4

1 に答える 1

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、物事は整列し続ける必要があります。そしてもちろん、異なるズームでは異なる幅が得られます。多くの異なるズーム値の幅を計算し、それをどこかに保存して後で参照するスクリプトを作成できます。

于 2015-06-24T16:31:51.580 に答える