SlideShare a Scribd company logo
1 of 43
Data Designer
Class 11
ggmap & leaflet
꿈꾸는데이터디자이너 시즌2
Map
꿈꾸는데이터디자이너 시즌2
# install.packages('maps')
library(maps)
library(ggplot2)
asia = map_data('world',
region = c('Japan',
'China',
'North Korea',
'South Korea'))
꿈꾸는데이터디자이너 시즌2
ggplot(asia,
aes(x = long, y = lat, group = group)) +
geom_polygon(fill = 'white', colour = 'black')
20
30
40
50
90 110 130
long
lat
꿈꾸는데이터디자이너 시즌2
ggplot(asia,
aes(x = long, y = lat, group = group)) +
geom_polygon(fill = 'white', colour = 'black') +
coord_map() # metacator 투영법
20
30
40
50
90 110 130
long
lat
꿈꾸는데이터디자이너 시즌2
ggplot(asia,
aes(x = long, y = lat, group = group)) +
geom_polygon(fill = 'white', colour = 'black') +
coord_map("polyconic") # polyconic 투영법
20
30
40
50
90 110 130
long
lat
꿈꾸는데이터디자이너 시즌2
geocoding
꿈꾸는데이터디자이너 시즌2
geocoding
주소 위도,경도
꿈꾸는데이터디자이너 시즌2
# install.packages('ggmap')
library(ggmap)
geocode('Seoul', source = 'google')
lon lat
126.978 37.56654
꿈꾸는데이터디자이너 시즌2
geocode('Seoul',
source = 'google',
output = 'latlona')
lon lat address
126.978 37.56654 seoul, south korea
꿈꾸는데이터디자이너 시즌2
geocode(enc2utf8(' '),
source = 'google')
lon lat
126.978 37.56654
꿈꾸는데이터디자이너 시즌2
geocode(enc2utf8(' '),
source = 'google',
output = 'latlona')
lon lat address
126.978 37.56654 seoul, south korea
꿈꾸는데이터디자이너 시즌2
geocode(enc2utf8(' &language=ko'),
source = 'google',
output = 'latlona')
lon lat address
126.978 37.56654
꿈꾸는데이터디자이너 시즌2
ggmap::mutate_geocode
주소가 포함된 data.frame -> 위도, 경도를 추가한다
주소가 담겨있는 열 이름(두 번째 인자)에 따옴표를 붙이지 않는다
mutate_geocode(data.frame,
address_column_name,
source = 'google')
꿈꾸는데이터디자이너 시즌2
station_list = c('시청역', '을지로입구역', '을지로3가역',
'을지로4가역', '동대문역사문화공원역', '신당역', '상왕십리역',
'왕십리역', '한양대역', '뚝섬역', '성수역', '건대입구역', '구의역',
'강변역', '잠실나루역', '잠실역', '신천역', '종합운동장역', '삼성역',
'선릉역', '역삼역', '강남역', '2호선 교대역', '서초역', '방배역',
'사당역', '낙성대역', '서울대입구역', '봉천역', '신림역', '신대방역',
'구로디지털단지역', '대림역', '신도림역','문래역', '영등포구청역',
'당산역', '합정역', '홍대입구역', '신촌역', '이대역', '아현역',
'충정로역')
2호선 지하철역 목록
꿈꾸는데이터디자이너 시즌2
# data.frame에 검색하려는 주소를 열로 저장한다
station_df = data.frame(station_list,
stringsAsFactors = FALSE)
# UTF-8로 인코딩을 변경한다
station_df$station_list = enc2utf8(station_df$station_list)
# mutate_geocode 함수를 이용해 좌표를 검색한다
station_lonlat = mutate_geocode(station_df,
station_list, source = 'google')
ggmap::mutate_geocode
꿈꾸는데이터디자이너 시즌2
station_list
1 시청역
2 을지로입구역
3 을지로3가역
4 을지로4가역
5 동대문역사문화공원역
6 신당역
7 상왕십리역
8 왕십리역
9 한양대역
10 뚝섬역
ggmap::mutate_geocode
station_list lon lat
1 시청역 126.9771 37.56544
2 을지로입구역 126.9827 37.56606
3 을지로3가역 126.9926 37.56629
4 을지로4가역 126.9976 37.56661
5 동대문역사문화공원역
127.0092 37.56564
6 신당역 127.0195 37.56567
7 상왕십리역 127.0289 37.56450
8 왕십리역 127.0373 37.56198
9 한양대역 127.0437 37.55562
10 뚝섬역 127.0473 37.54724
꿈꾸는데이터디자이너 시즌2
ggmap
꿈꾸는데이터디자이너 시즌2
qmap('seoul', zoom = 11)
qmap('seoul', zoom = 11, color = 'bw')
qmap('seoul', zoom = 11, maptype = 'roadmap')
qmap('seoul', zoom = 11, maptype = 'satellite')
qmap('seoul', zoom = 11, maptype = 'hybrid')
지도 그리기 (google)
ggmap::qmap
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
qmap('seoul', zoom = 11, source = 'stamen',
maptype = 'watercolor')
qmap('seoul', zoom = 11, source = 'stamen',
maptype = 'toner')
지도 그리기 (stamen design)
ggmap::qmap
꿈꾸는데이터디자이너 시즌2
지도 그리기 (stamen design)
ggmap::qmap
꿈꾸는데이터디자이너 시즌2
seoul_lonlat = unlist(
geocode('seoul', source='google'))
qmap(seoul_lonlat, zoom = 11,
source = 'stamen', maptype = 'toner')
특정 위도, 경도를 중심으로 지도 그리기
ggmap::qmap
꿈꾸는데이터디자이너 시즌2
seoul_map <- qmap('Seoul', zoom = 11,
source = 'stamen', maptype = 'toner')
seoul_map +
geom_point(data = station_lonlat,
aes(x = lon, y = lat),
colour = 'green',
size = 4)
지도 위에 레이어 끼얹기
mapping with ggmap + ggplot2
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
wifi_data = read.csv('wifi_data.csv',
stringsAsFactors = FALSE)
seoul_map +
geom_point(data = wifi_data, aes(x=lon, y=lat))+
facet_wrap(~div)
지도 위에 레이어 끼얹기
mapping with ggmap + ggplot2
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
seoul_map +
geom_polygon(data = wifi_data,
aes(x=lon, y=lat, fill=..level..),
stat = 'density2d',
alpha = 0.3) +
scale_fill_gradient(low = '#C6DBEF',
high = '#08306B') +
facet_wrap(~div)
지도 위에 레이어 끼얹기
mapping with ggmap + ggplot2
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
leaflet
꿈꾸는데이터디자이너 시즌2
# install.packages('leaflet')
library(leaflet)
leaflet(wifi_data) %>%
setView(lng = seoul_lonlat[1],
lat = seoul_lonlat[2],
zoom = 11) %>%
addTiles() %>%
addCircles(lng = ~lon, lat = ~lat)
설치하기 + 지도 그리기(default : OpenStreetMap)
mapping with leaflet
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
leaflet(wifi_data) %>%
setView(lng = seoul_lonlat[1],
lat = seoul_lonlat[2], zoom = 11) %>%
addProviderTiles('Stamen.Toner') %>%
addCircles(lng = ~lon, lat=~lat)
leaflet(wifi_data) %>%
setView(lng = seoul_lonlat [1],
lat = seoul_lonlat[2], zoom = 11) %>%
addProviderTiles('CartoDB.Positron') %>%
addCircles(lng = ~lon, lat=~lat)
지도 그리기(Third Party Tiles)
mapping with leaflet
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
leaflet(wifi_data) %>%
setView(lng = seoul_lonlat [1],
lat = seoul_lonlat[2], zoom = 11) %>%
addProviderTiles('Stamen.Toner') %>%
addCircles(lng = ~lon, lat=~lat, popup = ~div)
popup(tooltip) 설정하기
mapping with leaflet
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
부록
꿈꾸는데이터디자이너 시즌2
htmlwidgets
꿈꾸는데이터디자이너 시즌2
꿈꾸는데이터디자이너 시즌2
# install.packages('networkD3')
library(networkD3)
data(MisLinks, MisNodes)
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = 'source', Target = 'target',
Value = 'value',
NodeID = 'name', Group = 'group',
opacity = 0.6)
꿈꾸는데이터디자이너 시즌2
# install.packages('d3heatmap')
library(d3heatmap)
d3heatmap(mtcars, scale="column", colors="Blues")
꿈꾸는데이터디자이너 시즌2
# install.packages('DT')
library(DT)
datatable(iris)
[week11] R_ggmap, leaflet

More Related Content

What's hot

[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chartneuroassociates
 
[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)neuroassociates
 
꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차Songyi Lim
 
꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차Songyi Lim
 
문디 14주차 발제 scatter plot
문디 14주차 발제 scatter plot문디 14주차 발제 scatter plot
문디 14주차 발제 scatter plotMin Jeong Cho
 
SGL : 소프트웨어 3D 렌더링 엔진
SGL : 소프트웨어 3D 렌더링 엔진SGL : 소프트웨어 3D 렌더링 엔진
SGL : 소프트웨어 3D 렌더링 엔진SUNGCHEOL KIM
 
QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0Byeong-Hyeok Yu
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdfkd19h
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7jangpd007
 
Html5 canvas animation
Html5 canvas animationHtml5 canvas animation
Html5 canvas animationSangHun Lee
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unityJung Suk Ko
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]SeungWon Lee
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.jsneuroassociates
 
공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)H.J. SIM
 

What's hot (20)

[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart
 
[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)[week16] D3.js (Scale & axis)
[week16] D3.js (Scale & axis)
 
[week12] D3.js_Basic
[week12] D3.js_Basic[week12] D3.js_Basic
[week12] D3.js_Basic
 
꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차꿈데디 D3.js강의 6주차
꿈데디 D3.js강의 6주차
 
[Week12] D3.js_Basic2
[Week12] D3.js_Basic2[Week12] D3.js_Basic2
[Week12] D3.js_Basic2
 
꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차꿈데디 D3.js강의 2주차
꿈데디 D3.js강의 2주차
 
문디 14주차 발제 scatter plot
문디 14주차 발제 scatter plot문디 14주차 발제 scatter plot
문디 14주차 발제 scatter plot
 
SGL : 소프트웨어 3D 렌더링 엔진
SGL : 소프트웨어 3D 렌더링 엔진SGL : 소프트웨어 3D 렌더링 엔진
SGL : 소프트웨어 3D 렌더링 엔진
 
Open gl
Open glOpen gl
Open gl
 
3D Graphics 101
3D Graphics 1013D Graphics 101
3D Graphics 101
 
Drawing with data
Drawing with dataDrawing with data
Drawing with data
 
QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
 
안드로이드스터디 7
안드로이드스터디 7안드로이드스터디 7
안드로이드스터디 7
 
Html5 canvas animation
Html5 canvas animationHtml5 canvas animation
Html5 canvas animation
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unity
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.js
 
공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)공간데이터베이스(Spatial db)
공간데이터베이스(Spatial db)
 
Digit recognizer
Digit recognizerDigit recognizer
Digit recognizer
 

More from neuroassociates

Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료neuroassociates
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자neuroassociates
 
[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자neuroassociates
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자neuroassociates
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자neuroassociates
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자neuroassociates
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자neuroassociates
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자neuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부neuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회neuroassociates
 
꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며neuroassociates
 

More from neuroassociates (17)

Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료Bloter 넥스트 저널리즘 스쿨 강의자료
Bloter 넥스트 저널리즘 스쿨 강의자료
 
[Week20] D3.js_Mapping
[Week20] D3.js_Mapping[Week20] D3.js_Mapping
[Week20] D3.js_Mapping
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자
 
[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자[week7] 데이터읽어주는남자
[week7] 데이터읽어주는남자
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자
 
[week9]R_statics
[week9]R_statics[week9]R_statics
[week9]R_statics
 
[week7]R_Wrangling(2)
[week7]R_Wrangling(2)[week7]R_Wrangling(2)
[week7]R_Wrangling(2)
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자
 
[Week5]R_scraping
[Week5]R_scraping[Week5]R_scraping
[Week5]R_scraping
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자
 
[Week4] Google refine
[Week4] Google refine[Week4] Google refine
[Week4] Google refine
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회
 
꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며꿈꾸는 데이터 디자이너 1기를 끝내며
꿈꾸는 데이터 디자이너 1기를 끝내며
 
[Week10] R graphics
[Week10] R graphics[Week10] R graphics
[Week10] R graphics
 

[week11] R_ggmap, leaflet