2017-12-06 2 views
1

R을 사용하여 모양 파일에서지도를 채우는 사람들이 있습니다. here. 내 R 지식으로, 나는 셰이프 파일을 읽고 그것을 그렸다.R에서 자체 속성 테이블을 사용하여 shapefile에서 맵을 채우는 방법?

QGIS를 사용하여 "OCCURENCE"라는 속성 테이블에 추가 열을 추가했습니다. 이 열은 특정 이벤트가 발생한 연도입니다. 컬러 스케일을 사용하여 발생 연도에 따라 각 국가를 채우고 채우기없이 데이터가없는 나라를 남기고 싶습니다. 셰이프 파일이있는 폴더는 here입니다. 예를 들어, 저는 몇 년 동안 몇 나라에 추가했으며, 다음과 같은 것을 얻고 싶습니다.

enter image description here 및 범례 enter image description here과 같은 것을 얻고 싶습니다.

library(rgdal) 
library(ggplot2) 

World <- readOGR(dsn = "mundo", layer = "mundo") 
class(World) 

World2 <- fortify(World) 
class(World2) 

ggplot() + 
    geom_polygon(data = World2, aes(x = long, y = lat, group = group), 
       colour = "black", size = 0.5, fill = "white") 

enter image description here

어떤 도움?

+1

그래서 우리는 당신이 많이 묻는 질문에 대한 한 연구 그러면 모든 일을주기는 제안을 회전 할 수없는 것은 알고 이미 알고 있었다. – hrbrmstr

+1

간단한 방법으로'sf' 패키지를 사용할 수 있습니다. 'mydata <- st_read (dsn = ".", layer = "mundo"); ggplot() + geom_sf (데이터 = mydata, aes (채우기 = 오클라호스))' – jazzurro

답변

0

@jazzurro가 말한 것처럼 간단한 방법은 sf 패키지로 작업하는 것입니다. 그러나 몇 가지 단계를 추가하여 제안한 방법으로이 작업을 수행 할 수 있습니다.

id 필드를 추가하고이 속성을 fortify() 제품과 함께 입력해야합니다. 이와 함께, 당신은 어떤 필드 다각형을 채울 수 : SO 인정했다에 대한 답변을 choropleth 무엇

library(rgdal) 
library(ggplot2) 

World <- readOGR(dsn = "mundo", layer = "mundo") 
class(World) 

World2 <- fortify(World) 
class(World2) 

[email protected]$id <- 0:(dim([email protected])[1]-1) # add id field 

World2_join = plyr::join(x = World2,y = [email protected], by="id") # join by id 

ggplot() + 
    geom_polygon(data = World2_join, aes(x = long, y = lat, group = group, fill = OCCURENCE), # fill by OCCURENCE 
       colour = "black", size = 0.5) 

enter image description here

관련 문제