[R 기초] ggiraphExtra 패키지를 이용한 인터렉티브 시각화

2020. 10. 24. 16:58노트/R : 통계

 

1. 미국의 범죄율 데이터를 인터렉티브한 지도 모양으로 시각화 하기 

 

ggiraphExtra 패키지를 다운로드 

 

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

# 문자로 바꿔주기 
str(USArrests)
head(USArrests)

 

행이름을 열(column)로 바꿔주기 

library(tibble) # 데이터프레임 

crime <-rownames_to_column(USArrests, var='state')

head(crime)

 

crime$state <- tolower(crime$state) # 소문자로 변환 
crime$state
str(crime)

 

 

미국 지도 데이터 준비 

library(ggplot2)
install.packages("maps")
library(maps)

states_map<- map_data('state')
str(states_map)

install.packages("mapproj")
library(mapproj)

 

미국의 범죄에 대한 데이터 시각화 

ggChoropleth(data=crime, # 지도에 표시할 데이터 
             aes(fill-Murder, #색깔로 표시할 변수 
                 map_id=state), # 지역 기준 변수 
             map=states_map) # 지도데이터 

ggChoropleth(data= crime, # 지도에 표시할 데이터 
            aes(fill=Murder,# 색깔로 표시할 변수
                map_id=state), # 지역 기준 변수 
            map=states_map, # 지도 데이터 
            interactive = T)

2. 한국의 인구수 데이터를 인터렉티브한 지도 모양으로 시각화 하기 

 

install.packages("stringi")
install.packages("devtools")
devtools::install_github("cardiomoon/kormaps2014")

library(kormaps2014)

 

열 이름 변경

korpop1 <- rename(korpop1,
                  pop=총인구_명,
              name=행정구역별_읍면동)

names(korpop1)

korpop1 = changeCode(korpop1)
class(korpop1) # "data.frame"
str(korpop1)

ggChoropleth(data=korpop1, # 지도에 표시할 데이터 
             aes(fill= pop, # 색깔로 나타낼 변수 
                 map_id = code, # 지역 기준 변수 
                 tooltip = name), 
             map = kormap1)

 

 

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

#에러: Discrete value supplied to continuous scale 해결 

class(korpop1$pop) #"character"
korpop1$pop <- as.numeric(korpop1$pop) # 숫자로 변환

 

인구 분포도 ggplot함수로 시각화 하기 

ggplot(korpop1, 
       aes(map_id=code, fill=pop))+
  geom_map(map=kormap1,colour="black",size=0.1)+
  expand_limits(x=kormap1$long, y=kormap1$lat)+
  scale_fill_gradientn(colours = c("white","orange","red"))+
  ggtitle("2015년 인구분포도")+
  coord_map()