2016-09-02 2 views
1

저는 R에 매우 익숙합니다. 아래지도에서 아래지도를 생성 할 수있었습니다.ggplot2 (R)의 다각형 색칠

Map of Sampled areas in Masai Mara National Reserve

나는 (코드에서 "WestTerr"표시)지도 (코드에서 "세레나"표시) 다른 세 개의 다각형이 아닌 다른 색상에 가장 오른쪽 다각형 색상을합니다. 나는 저에게 오류를 던진 모든 것을 시도했습니다. 아무도 나를 도울 줄 알아?

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

데이터에 액세스 할 수 없어 샘플 데이터를 만들었습니다. 코드를 보면 네 번의 호출로 네 개의 다각형을 만들었습니다. 모든 데이터를 결합하고 다각형을 그려야한다고 생각합니다. 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

데이터

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을 사용하여지도를 만드는 것이 좋습니다. 상황은 천만 번 조작하기가 더 쉽습니다. 하지만 고마워요! – user6776473