본문 바로가기
데이타베이스

R 프로그래밍[4] - 지도 시각화, 단계 구분도

by minimax95 2020. 6. 1.

이번 포스팅에서는 RStudio를 이용하여 지역별 통계 분포를 지도 시각화로 표현하는 방법을 알아보겠습니다.

지역별 통계치를 지도 상에 색상으로 구분하여 표현한 지도를 '단계 구분도(Choropleth Map)'라고 합니다. 

단계 구분도를 통해 통계상 유의미한 특성을 지역별로 구별할 수 있는 지도로 표현할 수 있습니다.

 

단계 구분도는 ggiraphExtra 패키지를 이용하여 만들 수 있습니다.

여기에서는 R에 내장된 USArrests 데이터를 이용해 지도 시각화를 살펴보도록 하겠습니다.

 

RStudio에서 아래와 같이 패키지를 설치하고 라이브러리를 로드해 줍니다.

ggiraphExtra 패키지를 사용하기 위해 필요한 "mapproj"패키지를 먼저 설치해 줍니다.

우리가 사용할 USArests 데이터는 1973년 미국의 각 주별 강력 범죄율 정보를 담고 있는데 head( ) 함수를 이용해서 USArrests 데이터를 간략히 살펴봅니다.

각 행이 미국 주 이름으로 되어 있고 열은 범죄명으로 구성되어 있음을 확인할 수 있습니다.

첫 번째 열이 주 이름이지만 열이름이 공백으로 되어 있습니다.

여기서 tibble 패키지의 rownames_to_column( ) 함수를 이용하여 첫 열의 이름을 state로 설정해 줍니다.

또한 원본 USArrests 데이터를 crime 변수에 할당하여 아래와 같이 조작하도록 하겠습니다.

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

 

다음은 미국 지도 데이터를 준비할 차례입니다.

미국 주별 위경도 데이터가 들어있는 maps 패키지를 설치하고 ggplot2 패키지의 map_data( ) 함수를 이용해서 미국 주별 위경도 데이터를 data.frame 형태로 로딩해 줍니다.

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

 

이제 지도 시각화를 위한 준비가 거의 끝났습니다.

위에서 설치했던 ggiraphExtra 패키지의 ggChoropleth( ) 함수를 이용해서 단계 구분도를 만들어 보겠습니다.

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

살인 범죄 발생수를 색상으로 표현하기 위해 aes( ) 함수에서 fill 속성에 Murder 변수를 지정하고  map_id에 state 변수를 지정해 주었습니다.

 

ggChoropleth( ) 함수를 실행하게 되면 RStudio의 Plots 탭에 지도 시각화 그래프가 출력되는 것을 확인할 수 있습니다.

여기서 한 단계 더 나아가서 마우스 움직임에 반응하는 인터렉티브 단계 구분도를 만들어 보겠습니다.

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

 

interactive 속성에 True 값을 추가하면 아래의 그림처럼 마우스 움직임에 따라 각 주의 범죄율을 확인할 수 있는 인터렉티브 단계 구분도를 사용할 수 있습니다.

끝까지 읽어주셔서 감사합니다.

댓글