2016-12-31 13 views
0

私はggmapで得られたマップ上にいくつかのデータをプロットするプロジェクトを持っています。すべての作品は非常にうまくいきますが、あなたが得ることができるマップの種類のどれも私の必要性を完全に満たしていないことを除いて、すべてうまくいきます理想的には、私はggplotでプロットするための背景としてそれらを使用する前に、2つの彫像のタイプ「水彩」と「地形ラベル」を融合させたいと考えています。私は2つの地理的にmathcingマップを得ることができます。2つの異なるggmapマップをスタックできますか?

library("ggmap") 
library("ggplot2") 
lon<-c(-71.50,-71.60) 
lat<-c(42.40,42.50) 
coords<-data.frame(lon,lat) 
newmap1<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, 
right = -71.10, top = 42.55), maptype="watercolor", zoom=13) 

newmap2<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, 
right = -71.10, top = 42.55), maptype="terrain-labels", zoom=13) 

bbleft、bbright、bbbottom、bbtopは意味のある座標の任意のセットを示しています。 は、今私は(例えば、アルファ0.5と)newmap1上newmap2積み重ね、その後、私は通常、単一のマップで行うように自分のデータをプロットするためにそれを使用したいと思います:

ggmap(newmap1) + geom_point(aes(x = lon, y = lat), data = coords, colour = "#f409d8", size = 1, alpha =0.8) 

はありがとうございます。

私は以下のルークのコードを試してみましたが、これは私が手の画像です: enter image description here

ルーク:私は今、(私のデータに転送)すべてのパッケージとあなたのコードを更新し(そのためVEYありがとうございまし作品!!!):

library("ggmap") 
library("ggplot2") 
lon<-c(-71.50,-71.60) 
lat<-c(42.40,42.50) 
coords<-data.frame(lon,lat) 
newmap1<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, right = -71.10, top = 42.55), maptype="watercolor", zoom=12) 

newmap2<-get_stamenmap(bbox = c(left = -71.63, bottom = 42.36, right = -71.10, top = 42.55), maptype="toner-lite", zoom=12) 
newmap2_ <- adjustcolor(newmap2, alpha.f = .5) 
attributes(newmap2_) <- attributes(newmap2) 
map <- expand.grid(lon = as.numeric(attr(newmap1, "bb")[, c("ll.lon", "ur.lon")]), lat = as.numeric(attr(newmap1, "bb")[, c("ll.lat", "ur.lat")])) 
xmin <- attr(newmap1, "bb")$ll.lon 
xmax <- attr(newmap1, "bb")$ur.lon 
ymin <- attr(newmap1, "bb")$ll.lat 
ymax <- attr(newmap1, "bb")$ur.lat 
ggplot() + 
geom_blank(aes(x = lon, y = lat), data = map) + 
annotation_raster(newmap1, xmin, xmax, ymin, ymax) + 
annotation_raster(newmap2_, xmin, xmax, ymin, ymax) 

唯一の問題は、マップの割合が異常探しマップで、その結果、過延伸緯度で、間違っている: Map showing merging of the two maps 任意の回避策はありますか?

+2

再現性の例WLD他の人があなた – hrbrmstr

+0

[再現性の例を与える方法についての情報](http://stackoverflow.comを助ける助けます/ questions/5963269/how-to-make-a-great-r-reproducible-example/5963610)を参照してください。 – Jaap

答えて

2

はここalpha = .5をシミュレートし再現性の例です:

library(ggmap) 
bbox <- c(left = -97.132, bottom = 31.536, right = -97.105, top = 31.560) 
m1 <- get_stamenmap(bbox, maptype = "watercolor", zoom = 13) 
m2 <- get_stamenmap(bbox, maptype = "terrain-labels", zoom = 13) 
m2_ <- adjustcolor(m2, alpha.f = .5) 
attributes(m2_) <- attributes(m2) 
fourCorners <- expand.grid(lon = as.numeric(attr(m1, "bb")[, c("ll.lon", "ur.lon")]), lat = as.numeric(attr(m1, "bb")[, c("ll.lat", "ur.lat")])) 
xmin <- attr(m1, "bb")$ll.lon 
xmax <- attr(m1, "bb")$ur.lon 
ymin <- attr(m1, "bb")$ll.lat 
ymax <- attr(m1, "bb")$ur.lat 
ggplot() + 
    geom_blank(aes(x = lon, y = lat), data = fourCorners) + 
    annotation_raster(m1, xmin, xmax, ymin, ymax) + 
    annotation_raster(m2_, xmin, xmax, ymin, ymax) 

enter image description here

+0

もう1つのオプションは、2つのラスタをあらかじめマージすることです。お気に入りの検索エンジン(「rのマージラスタ」など)を使用すると、たくさんのオプションが見つかります... – lukeA

+0

これは素晴らしいです、私はそれを試してみましょう! –

+0

私はルークのコードを試してみましたが、X軸とY軸の地理座標で空のグリッドしか得られません。 –

関連する問題