728x90

11 지도 시각화

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

  • 단계 구분도(Choropleth Map)
    • 지역별 통계치를 색깔의 차이로 표현한 지도
    • 인구나 소득 같은 특성이 지역별로 얼마나 다른지 쉽게 이해할 수 있음
    library(ggiraphExtra)
    
    str(USArrests)
    
    ## 'data.frame':   50 obs. of  4 variables:
    ##  $ Murder  : num  13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
    ##  $ Assault : int  236 263 294 190 276 204 110 238 335 211 ...
    ##  $ UrbanPop: int  58 48 80 50 91 78 77 72 80 60 ...
    ##  $ Rape    : num  21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
    
    head(USArrests)
    
    ##            Murder Assault UrbanPop Rape
    ## Alabama      13.2     236       58 21.2
    ## Alaska       10.0     263       48 44.5
    ## Arizona       8.1     294       80 31.0
    ## Arkansas      8.8     190       50 19.5
    ## California    9.0     276       91 40.6
    ## Colorado      7.9     204       78 38.7
    
    library(tibble)
    
    crime <- rownames_to_column(USArrests, var = "state")
    crime$state <- tolower(crime$state)
    
    str(crime)
    
    ## 'data.frame':   50 obs. of  5 variables:
    ##  $ state   : chr  "alabama" "alaska" "arizona" "arkansas" ...
    ##  $ Murder  : num  13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
    ##  $ Assault : int  236 263 294 190 276 204 110 238 335 211 ...
    ##  $ UrbanPop: int  58 48 80 50 91 78 77 72 80 60 ...
    ##  $ Rape    : num  21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
    
    library(ggplot2)
    
    states_map <- map_data("state")
    str(states_map)
    
    ## 'data.frame':   15537 obs. of  6 variables:
    ##  $ long     : num  -87.5 -87.5 -87.5 -87.5 -87.6 ...
    ##  $ lat      : num  30.4 30.4 30.4 30.3 30.3 ...
    ##  $ group    : num  1 1 1 1 1 1 1 1 1 1 ...
    ##  $ order    : int  1 2 3 4 5 6 7 8 9 10 ...
    ##  $ region   : chr  "alabama" "alabama" "alabama" "alabama" ...
    ##  $ subregion: chr  NA NA NA NA ...
    
    ggChoropleth(data = crime,         # 지도에 표현할 데이터
                 aes(fill = Murder,    # 색깔로 표현할 변수
                     map_id = state),  # 지역 기준 변수
                 map = states_map)     # 지도 데이터

11-2 대한민국 시도별 인구, 결핵 환자 수 단계 구분도 만들기

library(kormaps2014)

str(changeCode(korpop1))

## 'data.frame':   17 obs. of  25 variables:
##  $ C행정구역별_읍면동     : chr  "'11" "'21" "'22" "'23" ...
##  $ : chr  "서울특별시" "부산광역시" "대구광역시" "인천광역시" ...
##  $ : chr  "2015" "2015" "2015" "2015" ...
##  $ : chr  "9904312" "3448737" "2466052" "2890451" ...
##  $ : chr  "4859535" "1701347" "1228511" "1455017" ...
##  ...

library(dplyr)

korpop1 <- rename(korpop1, pop = 총인구_명, name = 행정구역별_읍면동)
korpop1$name <- iconv(korpop1$name, "UTF-8", "CP949")

str(changeCode(kormap1))

## 'data.frame':   8831 obs. of  15 variables:
##  $ id       : chr  "0" "0" "0" "0" ...
##  $ long     : chr  "137.774352627938" "137.779270931415" "137.780545929866" "137.814504843261" ...
##  $ lat      : chr  "50.6883045072662" "50.6899249663447" "50.6900586920365" "50.6937941360883" ...
##  ...

ggChoropleth(data = korpop1,       # 지도에 표현할 데이터
             aes(fill = pop,       # 색깔로 표현할 변수
                 map_id = code,    # 지역 기준 변수
                 tooltip = name),  # 지도 위에 표시할 지역명
             map = kormap1,        # 지도 데이터
             interactive = T)      # 인터랙티브

str(changeCode(tbc))

## 'data.frame':   255 obs. of  5 variables:
##  $ name1 : chr  "강원" "경기" "경남" "경북" ...
##  $ code  : chr  "32" "31" "38" "37" ...
##  $ name  : chr  "강원도" "경기도" "경상남도" "경상북도" ...
##  $ year  : chr  "2001" "2001" "2001" "2001" ...
##  $ NewPts: chr  "1396" "4843" "1749" "2075" ...

tbc$name <- iconv(tbc$name, "UTF-8", "CP949")
ggChoropleth(data = tbc,           # 지도에 표현할 데이터
             aes(fill = NewPts,    # 색깔로 표현할 변수
                 map_id = code,    # 지역 기준 변수
                 tooltip = name),  # 지도 위에 표시할 지역명
             map = kormap1,        # 지도 데이터
             interactive = T)      # 인터랙티브

출처 : Do it! 쉽게 배우는 R 데이터 분석
 

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

통계, 프로그래밍을 1도 몰라도 데이터를 혼자서 다룰 수 있다!데이터 분석 프로젝트 전 과정 수록!데이터 분석을 처음 시작한 초보자도 어깨춤을 추며 데이터를 혼자 다룰 수 있게 한다는 강의

book.naver.com

728x90