단계 구분도(Choropleth Map)란?

- 지역별 통계치를 색깔의 차이로 표현한 지도

- 인구나 소득 같은 특성이 지역별로 얼마나 다른지 쉽게 이해 가능

 

 

■ 미국 주별 강력 범죄율 단계 구분도 만들기

(1) 패키지 준비하기

- 단계 구분도는 ggiraphExtra 패키지를 이용

install.packages("ggiraphExtra")
library(ggiraphExtra)

 

(2) 미국 주별 범죄 데이터 준비하기

- R에 내장된 USArrests 데이터는 1973년 미국 주(state)별 강력 범죄율 정보를 담고 있음

 

(3) 새 데이터 프레임 생성, 변수 속성 변경하기

- USArrests 데이터는 지역명 변수가 따로 없고, 대신 행 이름(rownames)이 지역명으로 되어 있음

- tibble 패키지의 rownames_to_column()을 이용해 행 이름을 state 변수로 바꿔 새 데이터 프레임 생성

(참고: tibble 패키지는 dplyr을 설치하면 자동으로 설치됨)

- 뒤에서 사용할 지도 데이터의 지역명 변수는 모든 값이 소문자로 되어 있기 때문에 이와 동일하게 맞추기 위해 tolower()를 이용해 state 값을 소문자로 수정

library(tibble)

crime <- rownames_to_column(USArrests, var = "state")
crime$state <- tolower(crime$state)

str(crime)

 

(4) 미국 주 지도 데이터 준비하기

- 단계 구분도 생성 시 지역별 위도, 경도 정보가 있는 지도 데이터 필요

- R에 내장된 maps 패키지에 미국 주별 위경도를 나타낸 state 데이터 존재. ggplot2 패키지의 map_data()를 이용해 이 데이터를 데이터 프레임 형태로 호출

install.packages("maps")
install.packages("mapproj")
library(ggplot2)
states_map <- map_data("state")
str(states_map)

(참고: map_data를 사용하려면 maps, mapproj 이라는 패키지가 설치되어 있어야함)

 

(5) 단계 구분도 만들기

- ggiraphExtra 패키지의 ggChoropleth()를 이용해 단계 구분도 제작

- 살인 범죄 건수를 색깔로 표현하기 위해 aes의 fill에 Murder 변수 지정

- map_id에 지역 구분이 되는 state 변수 지정

- crime 데이터의 state 변수와 states_map 데이터의 region 변수는 미국 주 이름을 나타내는 동일한 값으로 구성되어 있음

 

 

(6) 인터랙티브 단계 구분도 만들기

- interactive 파라미터를 TRUE로 설정하면, 마우스 움직임에 반응하는 인터랙티브 단계 구분도 제작 가능

- 5번의 코드 제일 뒷부분에 interactive = T 만 추가하면 됨

- 뷰어창의 인터랙티브 단계 구분도는 [Export > Save as Web Page...]를 클릭하면 HTML 포맷으로 저장 가능

ggChoropleth(data = crime,
             aes(fill = Murder,        
                 map_id = state),      
             map = states_map,
             interactive = T)

 

움짤 만들기 귀찮아서 직접 촬영,,,,

 

 

 

 

(출처; 가천대학교 컴퓨터공학과, 이영호 교수님)

(출처; 쉽게 배우는 R 데이터 분석, 김영우)

+ Recent posts