2016-09-02 47 views
1

私はRにとって非常に新しく、以下のコードで以下のマップを作成することができました。ggplot2(R)のポリゴンを塗りつぶし

Map of Sampled areas in Masai Mara National Reserve

私はマップ(コード内で「WestTerr」と表記)、他の3つの多角形(コードで示される「セレナ」)とは異なる色の右端のポリゴンに色をしたいと思います。私はすべて私に誤りを投げかけた様々なことを試みました。誰も私を助ける方法を知っていますか?

library(ggmap) 
library(RgoogleMaps) 
library(foreign) 
library(raster) 
library(sp) 
library(rgeos) 
library(spatstat) 
library(maptools) 
library(rgdal) 
library(ggplot2) 

CenterOfMap <- geocode("-1.4, 35.08") 

MasaiMara <- get_map(c(lon=CenterOfMap$lon, lat=CenterOfMap$lat), zoom = 10, 
        maptype = "roadmap", source = "google") 

MasaiMaraMap <- ggmap(MasaiMara) 

setwd("Territories_Jenna/") 

SouthTerr <- readOGR(".","SouthMCP") 
SouthTerr <- spTransform(SouthTerr, CRS("+proj=longlat +datum=WGS84")) 
fortify(SouthTerr) 

HZTerr <- readOGR(".","HZMCP") 
HZTerr <- spTransform(HZTerr, CRS("+proj=longlat +datum=WGS84")) 
fortify(HZTerr) 

SandHZ <- gUnion(SouthTerr, HZTerr) 
SandHZ <- spTransform(SandHZ, CRS("proj=longlat +datum=WGS84")) 
fortify(SandHZ) 

MapwithSandHZ <- MasaiMaraMap + 
       geom_polygon(aes(x=long, y=lat, group=group), 
           fill = "black", size=.7, color="black", 
           data=SandHZ, alpha=0) 

NorthTerr <- readOGR(".","NorthMCP") 
NorthTerr <- spTransform(NorthTerr, CRS("+proj=longlat +datum=WGS84")) 
fortify(NorthTerr) 

MapwithNorth <- MasaiMaraMap + 
       geom_polygon(aes(x=long, y=lat, group=group), 
          fill = "black", size=.7, color="black", 
          data=NorthTerr, alpha=0) 

Serena <- gUnion(SandHZ, NorthTerr) 
Serena <- spTransform(Serena, CRS("proj=longlat +datum=WGS84")) 
fortify(Serena) 

MapwithSerena <- MasaiMaraMap + 
       geom_polygon(aes(x=long, y=lat, group=group), 
           fill = "black", size=.7, color="black", 
           data=Serena, alpha=0) 

WestTerr <- readOGR(".","WestMCP") 
WestTerr <- spTransform(WestTerr, CRS("+proj=longlat +datum=WGS84")) 
fortify(WestTerr) 

MapwithWest <- MasaiMaraMap + 
       geom_polygon(aes(x=long, y=lat, group=group), 
          fill = "red", size=.7, color="red", 
          data=WestTerr, alpha=0) 

AllTerrs <- gUnion(Serena, WestTerr) 
AllTerrs <- spTransform(AllTerrs, CRS("proj=longlat +datum=WGS84")) 
fortify(AllTerrs) 

MapwithAllTerrs <- MasaiMaraMap + 
        geom_polygon(aes(x=long, y=lat, group=group), 
           fill = "red", size=.7, color="red", 
           data=AllTerrs, alpha=0) 

MapwithAllTerrs 
+0

とポリゴンの色を変更することができますそして、あなたが取得しているエラーは何ですか? – dg99

答えて

2

データにアクセスできないため、サンプルデータを作成しました。コードを見て、4回の呼び出しで4つのポリゴンを作成しました。私はすべてのデータとポリゴンを組み合わせたいと思う。 fortify()を使用すると、IDの列が表示されます。データを結合する場合は、各ポリゴンに固有のIDが付いていることを確認する必要があります。データを取得したら、作業を簡単に行うことができます。手動でscale_fill_manual()

library(ggmap) 
CenterOfMap <- geocode("-1.4, 35.08") 

MasaiMara <- get_map(c(lon=CenterOfMap$lon, lat=CenterOfMap$lat), zoom = 10, 
        maptype = "roadmap", source = "google") 

ggmap(MasaiMara) + 
geom_polygon(data = mydf, aes(x = long, y = lat, group = id, fill = factor(id))) + 
scale_fill_manual(values = c("red", "red", "blue")) 

enter image description here

DATA

mydf <-structure(list(id = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L), long = c(34.97, 34.95, 34.95, 34.97, 34.97, 
35, 34.82, 34.83, 35, 35, 35.2, 35.1, 35.1, 35.2, 35.2), lat = c(-1.38, 
-1.38, -1.4, -1.4, -1.38, -1.6, -1.6, -1.7, -1.7, -1.6, -1.43, 
-1.43, -1.5, -1.5, -1.43)), class = c("tbl_df", "tbl", "data.frame" 
), row.names = c(NA, -15L), .Names = c("id", "long", "lat"), spec = structure(list(
cols = structure(list(id = structure(list(), class = c("collector_integer", 
"collector")), long = structure(list(), class = c("collector_double", 
"collector")), lat = structure(list(), class = c("collector_double", 
"collector"))), .Names = c("id", "long", "lat")), default = structure(list(), class = c("collector_guess", 
"collector"))), .Names = c("cols", "default"), class = "col_spec")) 
+0

私はこれまで数年前に尋ねたことは知っていますが、答えに感謝したことは決してありませんでした。私はArcGISを使って地図を作成しましたが、これはRを使って地図を作ることを強くお勧めします。物事は1000万倍も簡単に操作できます。しかし、本当にありがとう! – user6776473

関連する問題