R

R - 지도시각화(kormaps2014) : 대한민국 시도별 인구, 결핵 환자 수 단계 구분도

d22pinsights 2024. 7. 31. 11:20

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

 

패키지 준비하기
install.packages("stringi")
devtools::install_github("cardiomoon/kormaps2014")
library(stringi)
library(kormaps2014)

kormaps2014 패키지를 이용하면 대한민국의 지역 통계 데이터와 지도 데이터를 사용할 수 있다

kormaps2014 패키지를 설치하기 위해, stringi, devtools패키지를 설치한 후 깃허브에서 kormaps2014를 다운로드해준다

 

대한민국 결핵환자 데이터 준비

kormaps2014 패키지에는 지역별 결핵 환자 수에 대한 tbc 데이터가 있다

# 결핵환자 데이터 준비
changeCode(tbc)
# 지도 데이터 준비
changeCode(kormap1)

tbc 데이터와 시도별 위도, 경도 정보를 담고 있는 kormap1 지도 데이터를 불러왔다

# 지도 시각화
ggChoropleth(data = tbc,
             aes(fill = NewPts, map_id = code, tooltip = name),
             map = kormap1,
             interactive = T)

환자수를 나타내는 NewPts, 지역기준변수인 code를 지정해주고

code는 숫자 코드로 되어 있기 때문에, 코드 대신 지역명이 표시되도록 tooltip = name으로 지정해주자

그럼 이렇게 마우스를 올렸을 때, 숫자 코드가 아닌 제주특별자치도 처럼 지역명이 표시된다

 

한글 엔코딩

한글에 문제가 생기면 iconv 기억하기

tbc$name <- iconv(tbc$name, "UTF-8")
tbc$name

위 코드를 통해 한글 엔코딩 처리 후 다시 지도 시각화 하면 된다

 

지역 통계 데이터 - 인구수

 

이번엔 결핵 환자 수가 아닌 인구수를 시각화 해보자

시도별 인구통계 정보가 담겨있는 korpop1데이터를 불러오자

changeCode(korpop1)
str(changeCode(korpop1))

#변수 이름 변경
library(tidyverse)
korpop1_copy <- rename(korpop1, name = 행정구역별_읍면동, pop = 총인구_명)
head(korpop1_copy)

변수 이름을 영어로 바꿔주었다 ( 혹시 모를 오류 방지!)

 

한글 엔코딩
# 한글 엔코딩
korpop1_copy$name <- iconv(korpop1_copy$name, "UTF-8")
head(korpop1_copy)

 

지도 데이터 - 시각화
# 지도 데이터
changeCode(kormap1)

# 지도 시각화
options(scipen = 99)
ggChoropleth(data = korpop1_copy,
             aes(fill = pop, map_id = code),
             map = kormap1)
             
# interactive
ggChoropleth(data = korpop1_copy,
             aes(fill = pop, map_id = code),
             map = kormap1,
             interactive = T)
             
# 지역 이름으로 나오게 변경
ggChoropleth(data = korpop1_copy,
             aes(fill = pop, map_id = code, tooltip = name),
             map = kormap1,
             interactive = T)

지도 데이터인 kormap1 불러오기!

options(scipen = 99) : 지수 표기를 숫자 표기로 바꾸는 옵션이다

마지막 tooltip = name으로 지정해주면서 마우스를 올려놨을 때, 지역명이 나오게 설정하였다

 

저번 포스팅과 이번 포스팅을 통해 지도 시각화에 대해 알아봤다

쓰는 데이터는 달라도 ggChoropleth 함수를 이용하는 건 같아서 어렵진 않았던 것 같다

한글 엔코딩 문제는 iconv!

그럼 오늘 포스팅도 끝