R 기초강의(21) - R ggmap
R 강좌는 여러 절로 구성되어 있습니다.
- R 기초강의(1) - R 개요
- R 기초강의(2) - R Operator
- R 기초강의(3) - R Data Type
- R 기초강의(4) - R 패키지와 함수
- R 기초강의(5) - R 자료구조(vector)
- R 기초강의(6) - R 자료구조(matrix)
- R 기초강의(7) - R 자료구조(factor, list)
- R 기초강의(8) - R 자료구조(data frame)
- R 기초강의(9) - R 문자열 처리
- R 기초강의(10) - R 데이터 입출력
- R 기초강의(11) - R 제어문 및 함수
- R 기초강의(12) - R 기초 Exercise
- R 기초강의(13) - R Crawling
- R 기초강의(14) - R 데이터 조작
- R 기초강의(15) - R 데이터 조작 실습
- R 기초강의(16) - R 데이터 정제
- R 기초강의(17) - R 기초 통계 함수
- R 기초강의(18) - R Graph
- R 기초강의(19) - R KoNLP
- R 기초강의(20) - R 연습문제
- R 기초강의(21) - R ggmap
- R 기초강의(22) - R 정형데이터 처리
R ggmap
구글 지도 서비스를 활용할 수 있도록 도와주는 package인 ggmap에 대해서 알아보겠습니다.
Google Map Platform은 Googl API Key를 이용해야 합니다. 따라서 추가적인 몇가지 package를 설치하고 로드해야 합니다.
#
# Google Map Platform을 사용해보자
# 사용하고 있는 R 버전 확인
# 현재 3.6.1을 사용하고 있음.
# 현재시점(2019.11)에서
# ggmap을 사용하려면 3.5.x 버전이 필요
# 3.5.3 버전을 설치하자
sessionInfo() # 현재 3.5.3 사용
# 필요한 package 설치 및 load
install.packages("devtools")
library(devtools)
install_github('dkahle/ggmap', force=T) # 3.5.3 에서는 force=T 추가
library(ggmap) # API 이용 약관에 동의해야 한다.
# 생성한 Google API Key
googleAPIKey = "AIzaSyDb8Oqv9AqTVBFWUKyOZh1SkSv_9SeEtKI"
# API Key 인증을 하기 전에 Google Map Platform Console에서
# 추가 API항목에 있는 API를 사용 설정된 API로 적용시켜야 한다.
# 예) Geocoding API
# Google API Key 인증
register_google(key=googleAPIKey)
# 서울지역의 정보를 가져온다.
gg_seoul <- get_googlemap("seoul",maptype = "roadmap")
ggmap(gg_seoul)
##################################
# 위의 내용이 성공했다면
# 특정위치를 지정해서
library(dplyr)
library(ggplot2)
geo_code = geocode(enc2utf8("공덕역"))
geo_data = as.numeric(geo_code) # vector로 변환
get_googlemap(center = geo_data,
maptype = "roadmap",
zoom = 16) %>%
ggmap() +
geom_point(data=geo_code,
aes(x=lon,
y=lat),
size=5,
color="red")
##################################
# 위치정보를 가져온다
addr <- c("공덕역","역삼역")
gc <- geocode(enc2utf8(addr))
df <- data.frame(lon=gc$lon,
lat=gc$lat)
cen <- c(mean(df$lon),mean(df$lat))
map <- get_googlemap(center=cen,
maptype="roadmap",
zoom=13,
size=c(640,640),
marker=gc)
ggmap(map)
Goolge Map Platform과 공공데이터 포털에서 제공하는 데이터를 이용하면 다양한 분석내용을 지도에 표현할 수 있습니다.
예를 들면
지하철역 주소 정보 : 서울 열린 데이터 광장
아파트 실 거래금액 데이터 : 국토교통부 실거래가 공개시스템
데이터를 이용하여 서울시 지도에 가격별로 아파트 가격에 대한 정보를 표현할 수 있습니다.
R interactive graph
인터렉티브 그래프란, 마우스 움직임에 반응하여 실시간으로 형태가 변하는 그래프를 의미합니다. 인터렉티브 그래프를 이용하면 그래프를 자유롭게 조작하면서 관심있는 부분을 자세히 볼 수 있습니다.
이런 그래프를 HTML형식으로 저장하면 일반 사용자들도 분석된 그래프를 웹 브라우져를 이용하여 그래프를 조작할 수 있습니다.
사용하는 package는 plotly
입니다.
# interactive graph
# 필요한 package를 설치합니다.
install.packages("plotly")
library(plotly)
# ggplot2를 이용하여 만든 그래프를 plotly의 ggplotly() 함수를
# 이용하면 인터렉티브 그래프가 생성됩니다.
# 기존에 했던 mpg data set을 이용하여 배기량과 고속도로 연비에 대한
# 산점도를 먼저 그려보겠습니다.
library(ggplot2)
df <- as.data.frame(mpg)
head(df)
g <- ggplot(data=df,
aes(x=displ,
y=hwy)) +
geom_point(size=2, color="red")
ggplotly(g)
######################
# ggmap으로 처리했던 내용을 ggplotly()를 이용하여
# interactive하게 만들어보자!
addr <- c("공덕역","역삼역")
gc <- geocode(enc2utf8(addr))
df <- data.frame(lon=gc$lon,
lat=gc$lat)
cen <- c(mean(df$lon),mean(df$lat))
map <- get_googlemap(center=cen,
maptype="roadmap",
zoom=13,
size=c(640,640),
marker=gc)
result <- ggmap(map)
ggplotly(result)
일반적인 그래프와는 다르게 시계열 그래프는 interactive graph를 생성할 때 단순 확대, 축소 기능이 필요한게 아니라 시간축을 움직이면서 시간에 따라 데이터가 어떻게 변하는지 확인하는 기능이 필요합니다.
따라서 시계열 그래프는 다른 package를 이용하여 interactive graph를 생성합니다.
# 시계열 그래프를 interactive하게 만들어보자
# 필요한 package를 설치합니다.
install.packages("dygraphs")
library(dygraphs)
# 사용할 데이터는 시계열 데이터가 있어야 하므로
# economics data set을 이용합니다.
head(economics)
# dygraphs를 이용하려면 데이터가 시간 순서 속성을
# 지니는 xts data type으로 되어 있어야 합니다.
# economics의 개인별 저축율을 xts type으로 변환합니다.
library(xts)
save_rate <- xts(economics$psavert,
order.by = economics$date)
head(save_rate)
# 시계열 그래프를 그린다.
dygraph(save_rate)
# 그래프 아래에 날짜 범위를 선택할 수 있는 selector를
# 추가할 수 있습니다.
dygraph(save_rate) %>% dyRangeSelector()
# 한번에 하나의 그래프를 그리는 것뿐 아니라
# 여러개의 그래프를 그릴 수 있습니다.
# 실업자수와 개인저축률을 시간순으로 interactive하게
# 그래프로 표현해보자!
# unemploy와 psavert를 xts type으로 변경
# 비율을 맞춰야 한다.
unemp_xts <- xts(economics$unemploy/1000,
order.by = economics$date)
savert_xts <- xts(economics$psavert,
order.by = economics$date)
# cbind()를 이용하여 가로로 병합하자
unemp_save <- cbind(unemp_xts,savert_xts)
colnames(unemp_save) <- c("실업자수","개인저축률")
head(unemp_save)
dygraph(unemp_save) %>% dyRangeSelector()
End.
이 포스트의 내용은 아래의 책과 사이트를 참조했습니다. 조금 더 자세한 사항을 알고 싶으시면 책을 참조하거나 해당 사이트를 방문하세요!!