본문 바로가기

R programming

[leaflet패키지] 지도에 인터렉티브한 정보 표시하기

반응형

 전 포스팅에 마지막에 썼던 인터렉티브 지도를 만들려면 어떻게 써야할지 열심히 구글링을 했고,

leaflet이라는 패키지가 있다는 것을 발견했습니다.

처음 leaflet이라고만 검색을 해보니 자바스크립트가 나와서

아 이게 자바스크립트에서 처음 만들어진건가? 싶더라구요

구글링하실 때는 알고 싶은 것+in r 이라고 검색하면 기초적인 웬만한 정보는 다 나옵니당

leaflet이라는 함수를 쓰면 인터렉티브 지도를 생성하고, 위도와 경도에 따른 포인트를 지정하고,

해당 특정 위치에 대한 정보를 담아낼 수 있습니다.

 

library(leaflet)
library(dplyr)

라이브러리는 leaflet, dplyr을 불러옵니다.

 

 

bike<-read.csv("sharebike.csv")

bike_start<-bike %>%
  select(Trip.ID,
         Trip.Route.Category,
         Passholder.Type,
         Starting.Station.ID,
         Starting.Station.Latitude,
         Starting.Station.Longitude)

bike_start_sample<-head(bike_start,1000)

bike_start_sample$lat<-bike_start_sample$Starting.Station.Latitude
bike_start_sample$lon<-bike_start_sample$Starting.Station.Longitude

데이터를 읽어들이고, dplyr의 select함수를 이용해 원하는 정보만 가져옵니다.

 

 

 

 

bike_start_sample의 데이터 정보를 확인하면 이렇게 구성되어있습니다.

 

data.frame': 1000 obs. of 8 variables:

$ Trip.ID : int 1912818 1919661 1933383 1944197 1940317 1944075 1944073 1944067 1944062 1944063 ...

$ Trip.Route.Category : Factor w/ 2 levels "One Way","Round Trip": 2 2 2 2 2 1 1 1 2 1 ...

$ Passholder.Type : Factor w/ 4 levels "Flex Pass","Monthly Pass",..: 2 2 1 1 4 2 2 1 1 2 ...

$ Starting.Station.ID : int 3014 3014 3016 3016 3032 3021 3022 3076 3031 3031 ...

$ Starting.Station.Latitude : num 34.1 34.1 34.1 34.1 34 ...

$ Starting.Station.Longitude: num -118 -118 -118 -118 -118 ...

$ lat : num 34.1 34.1 34.1 34.1 34 ...

$ lon : num -118 -118 -118 -118 -118 ...

 

leaflet에 쓰이는 함수를 설명하면 다음과 같습니다.

#leaflet(data)를 통해 leaflet map widget을 생성하고 데이터를 연결한다

#setView()함수를 사용하면 지도의 중심과 확대 정도를 설정한다

#addTiles() 함수는 기본 타일(OpenStreetMap)을 불러와서 지도를 보여준다

#addCircles() 함수를 통해 데이터를 원의 형태로 지도에 나타낼 수 있다

위의 함수를 이용하여 지도 위에 정보를 표시할 수 있습니다.

 

m<-leaflet(bike_start_sample) %>%
  setView(lng = la_lonlat[1], lat= la_lonlat[2], zoom = 13) %>%
  addTiles() %>%
  addCircles(lng= ~lon, lat=~lat,
             popup = paste("ID", bike_start_sample$Starting.Station.ID))

setView를 통해 로스앤젤로스의 위경도 좌표값을 미리 지정해둔 변수값에서 불러옵니다.

addCircle을 통해 bike_start_sample 데이터 안에 있는 데이터 값을 원으로 나타내고

각 원에 팝업을 생성하게 해서, ID라는 이름으로 각 starting.station.ID를 불러오도록 합니다.

 

이렇게

http://rpubs.com/jongho/491555

 

RPubs - HTML

 

rpubs.com

 

각 점들을 클릭하면 ID가 표시되는 것을 확인할 수 있습니다.

 

 

 

 

사실 이것만으로는 어느 곳에 빈도가 많은지 알 수 없는데 열심히 구글링해본 결과,

클러스터 옵션이란 것을 발견할 수 있었습니다.

  leaflet(bike_start_sample) %>%
  addTiles() %>%
  addMarkers(clusterOptions = markerClusterOptions())

위와 같은 같은 명령어를 통해 기초적인 클러스트를 구현할 수 있습니다.

http://rpubs.com/jongho/491557

 

RPubs - Interactive map with cluster

 

rpubs.com

 

직접 지도를 확인해보시기 바랍니다.

 

앞서 포스팅했던 있었던 바형태의 그래프보다

훨씬 깔끔하고 위치에 따른 빈도 수를 직관적으로 확인할 수 있습니다.

반응형