전 포스팅에 마지막에 썼던 인터렉티브 지도를 만들려면 어떻게 써야할지 열심히 구글링을 했고,
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
각 점들을 클릭하면 ID가 표시되는 것을 확인할 수 있습니다.
사실 이것만으로는 어느 곳에 빈도가 많은지 알 수 없는데 열심히 구글링해본 결과,
클러스터 옵션이란 것을 발견할 수 있었습니다.
leaflet(bike_start_sample) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions())
위와 같은 같은 명령어를 통해 기초적인 클러스트를 구현할 수 있습니다.
http://rpubs.com/jongho/491557
직접 지도를 확인해보시기 바랍니다.
앞서 포스팅했던 있었던 바형태의 그래프보다
훨씬 깔끔하고 위치에 따른 빈도 수를 직관적으로 확인할 수 있습니다.
'R programming' 카테고리의 다른 글
[SSizeLogisticBin함수] A/B테스트를 위해 필요한 표본 개수 알아내기 (0) | 2019.05.17 |
---|---|
Hypothesis Testing (0) | 2019.05.08 |
ggmap을 활용해 지도 위에 장소표시하기 (0) | 2019.04.06 |
R에서 ggmap 불러오기(Google API 등록과정) (6) | 2019.04.05 |
로지스틱 회귀분석-환자들 생존예측 (예제 따라하기) (0) | 2019.04.04 |