반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
07-05 05:44
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
관리 메뉴

iOS 개발 기록 블로그

R로 서울 지하철 2호선 시각화하기 (지도 그래프) 본문

R

R로 서울 지하철 2호선 시각화하기 (지도 그래프)

crazydeer 2022. 2. 16. 22:00
반응형

지도 그래프

이번에는 maps와 mapproj 라이브러리를 활용하여 지도 그래프를 그려보겠습니다.

먼저 패키지를 설치해주세요.

마찬가지로 RStudio Cloud를 사용해서 진행하겠습니다.

install libraries

위와 같이 라이브러리를 설치하고 map("world")를 해주면 아래와 같이 결과가 나옵니다.

위 코드 실행 결과

여기서 우리나라 지도만 출력해봅시다.

>map("world", "south korea")

결과)

우리나라 지도 그래프 결과

 

위 지도와 공공데이터포털에서 서울 지하철 2호선 위, 경도 데이터를 활용해서 지도 위에 2호선 위치를 시각화해보겠습니다. 먼저 저는 구글에 '서울 지하철 2호선 위도 경도 정보 csv' 라고 검색했더니 바로 위에 아래와 같이 나와서 데이터를 받아서 RStudio Cloud에 넣었습니다. Cloud 실행환경이 아니신 분은 적절한 위치에 csv 파일을 올리면 되겠습니다.

구글 검색 결과

https://www.data.go.kr/data/15041301/fileData.do

 

국가철도공단_수도권2호선_역위치_20211111

수도권2호선에 포함된 도시광역철도역들의 철도운영기관명, 선명, 역명, 경도, 위도에 대한 데이터가 있습니다.

www.data.go.kr

 

이번에는 ggplot2와 ggmap 라이브러리를 써볼게요.

> install.packages("ggplot2")

> install.packages("ggmap")

> library(ggplot2)

> library(ggmap)

 

모두 받아주고 아래처럼 실행합니다.

csv파일 로드하는 코드

아래부터는 코드 적기 힘들어서 변수명을 metro_data로 해서 csv파일을 로드해줬습니다.

먼저 지도를 서울 쪽으로 확대해서 생성하기 위해서 중심점을 잡습니다.

공공데이터포털 데이터 프리뷰

위와 같이 2호선 역들의 위치가 위도, 경도로 나와있습니다. 중심을 잡기 위해 경도 값들의 mean값, 위도 값들의 mean 값을 구하겠습니다.

 

> center <- c(mean(metro_data$경도), mean(metro_data$위도))

> center

[1] 126.98851  37.52672

 

위와 같이 중심점의 위도, 경도를 구했고 그 중심으로 지도를 생성하겠습니다.

 

> seoul <- get_map(center, zoom = 11, maptype = "roadmap")
Error: Google now requires an API key.
       See ?register_google for details.

 

.....예전에는 됐었는데 이제는 구글 맵을 쓰려면 API key가 필요한가봅니다.

그래서 아래 블로그를 참고하여 API key를 받았습니다.

https://mrkevinna.github.io/R-%EC%8B%9C%EA%B0%81%ED%99%94-3/

 

R 시각화 3

Google Map Api를 활용한 지도 시각화 Dr.Kevin 5/3/2018

mrkevinna.github.io

R로 돌아와서

> register_google(key = '자신의 구글 지도 API 인증키를 입력하세요.')

를 하게 되면 등록이 되고 아래와 같이 코드를 실행하면 결과를 볼 수 있다.

 

> qmap(location = center, zoom = 12, maptype = 'roadmap', source = 'google')

결과)

위 코드 실행 결과

그리고 이제 위에서 로드했던 CSV 파일에 있는 위도, 경도로 점을 찍어주고 그 점 바로 위에 역명 데이터를 가져와서 시각화하여 보겠습니다.

 

> seoul <- get_map(location = center, zoom = 12, maptype = 'roadmap', source = 'google')

> seoul.map <- ggmap(seoul) + geom_point(data = metro_data, aes(x = 경도, y = 위도, colour = 'green'), size = 3, alpha = 0.7)
> seoul.map + geom_text(data = metro_data, aes(x = 경도, y = 위도+0.005, label=역명), size = 2)

 

위 코드 실행 결과

2호선이 연두색이니까 green으로 colour 파라미터를 설정해줬는데 핑크로 나오는 건 왜 때문이지?

아무튼 이건 나중에 알아보는 걸로 하고 여기서 마무리 지어볼게요.

개발하실때 구글링하시는 것도 좋지만 공식 문서를 같이 참고하시는 게 좋습니다.

R 스튜디오 콘솔 창에

> ?ggmap

이라고 입력하시면 아래와 같이 문서를 보시고 궁금하신 것 검색해서 볼 수 있습니다.

저 같은 경우는 geom_text라고 검색해서 참고했습니다.

?ggmap 실행 결과 창

 

반응형