본문 바로가기
R

R - 지도시각화(ggiraphExtra) : 미국 주 별 강력 범죄율

by d22pinsights 2024. 7. 30.

참고 : Do it! 쉽게 배우는 R 데이터분석

 

단계 구분도

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

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

 

미국 주별 강력 범죄율 데이터를 이용해 단계 구분도를 만들어보자

 

패키지 준비
install.packages("mapproj")
install.packages("ggiraphExtra")

library(mapproj)
library(ggiraphExtra)
library(tidyverse)

단계 구분도를 그리기 위해선 ggiraphExtra 패키지를 설치해야한다

ggiraphExtra 패키지를 이용하기 위해선 mapproj 패키지가 있어야한다

설치 후 library를 통해 불러와 줬다

 

미국 주별 범죄 데이터 준비
head(USArrests)

#현재 데이터의 행 이름이 주 이름
# 주 이름을 열로 변환 : rownames_to_column
crime <- rownames_to_column(USArrests, var = "state")
head(crime)

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

USArrests 데이터는 지역명 변수가 없고, 행 이름이 주 이름이기 때문에 

주 이름을 열로 변환해서 state 변수로 바꿔 crime이라는 새 데이터 프레임을 만들었다

 

지도 데이터 준비

단계 구분도를 만들려면 지역별 위도, 경도 정보가 있는 지도 데이터가 필요하다

ggplot2의 map_data를 통해 미국 주별 위경도 데이터를 state_map에 저장했다

# install.packages("maps")
library(ggplot2)
state_map <- map_data("state')
head(state_map)

안된다면 미국 주별 위경도 데이터가 들어있는 maps 패키지를 설치해보자

 

지도 시각화
ggChoropleth(data = "지도에 표현할 데이터", 
                       aes(fill = "색깔로 표현할 변수",
                               map_id = "지역 기준 변수"),
                       map  = "지도 데이터")

 

1. 살인 범죄 건수 표현하기

data = crime, aes(fill = Murder(살인범죄 건수), map_id = state), map = state_map

# 살인
ggChoropleth(data = crime,
             aes(fill = Murder, map_id = state),
             map = state_map)

색이 진할 수록 범죄 건수가 많다는 것을 의미한다

 

interactive 파라미터를 이용하면 마우스 움직임에 반응하는 인터랙티브 단계 구분도를 만들 수 있다

# 인터랙티브 시각화 추가
ggChoropleth(data = crime,
             aes(fill = Murder, map_id = state),
             map = state_map,
             interactive = T)

 

2. 폭행 건수 표현하기

# 폭행
ggChoropleth(data = crime,
             aes(fill = Assault, map_id = state),
             map = state_map)
# 인터랙티브 시각화 추가
ggChoropleth(data = crime,
             aes(fill = Assault, map_id = state),
             map = state_map,
             interactive = T)

florida는 폭행 건수가 335로 자주 폭행사건이 일어난다고 볼 수 있다

 

3. 성범죄

# 성범죄
ggChoropleth(data = crime,
             aes(fill = Rape, map_id = state),
             map = state_map)
# 인터랙티브 시각화 추가
ggChoropleth(data = crime,
             aes(fill = Rape, map_id = state),
             map = state_map,
             interactive = T)

성범죄는 캘리포니아에서 많이 일어났다는 걸 볼 수 있다

 

다음엔 대한민국의 지도를 그려보쟈