본문 바로가기
Study

[혼공단] 혼공R이 6주차 미션 - Chapter 6. 데이터 시각화: ggplot2 패키지. (feat. 혼자 공부하는 R 데이터분석)

by 잇포에듀 2022. 8. 21.
반응형

[혼공단] 혼공R이 6주차 미션 - Chapter 6. 데이터 시각화: ggplot2 패키지, ggmap 패키지 사용

이번 주 스터디 내용 요약

지난 주에는 dplyr 패키지, reshape2 패키지를 활용하여 수집한 데이터들을 필요에 맞게 가공하는 연습을 해보았습니다. 

 

[혼공단] 혼공R이 5주차 미션 - Chapter 5. 데이터 가공하기. (feat. 혼자 공부하는 R 데이터분석)

 

[혼공단] 혼공R이 5주차 미션 - Chapter 5. 데이터 가공하기. (feat. 혼자 공부하는 R 데이터분석)

[혼공단] 혼공R이 5주차 미션 - Chapter 5. 데이터 가공하기. 파이프 연산자, reshape2 패키지, dcast() 함수 이번 주 스터디 내용 요약 지난 주에는 기본적인 데이터 다루기 기술들을 익혀보았습니다. 데

it4edu.tistory.com

 

이번 주에는 지금까지 수집하고, 가공한 데이터들을 우리의 눈으로 보기 쉽게 시각화하는 연습을 해 보았습니다.

 

ggplot2 패키지는 ggplot() 함수를 이용하여 그래프 틀을 만들고, 그 안에 다양한 이미지 객체 레이어를 계속 포개는 방식으로 그래프를 표현하는 패키지입니다. ggplot2 패키지를 설치하고 로드한 뒤에 산점도(geom_point() 함수), 선 그래프(geom_line() 함수), 막대 그래프(geom_bar() 함수), 상자 그림(geom_boxplot() 함수), 히스토그램(geom_histogram() 함수) 등 다양한 종류 함수를 활용하여 그래프를 그려보았습니다.

 

이어서 ggmap 패키지를 이용하여 구글 지도로 시각화하는 것을 연습했습니다. 구글 지도 API를 제공하는 구글 지도 플랫폼에 회원가입하고, API 키를 발급 받아서 ggmap 패키지로 원하는 위치를 표시해 보았습니다.

 

이번 주 미션은 다음과 같습니다.

# 진도 기본 미션 선택 미션
6주차 Chapter 06 p.288의 <좀 더 알아보기> 실습하고 결과 화면 인증샷 구글 API와 ggmap 패키지를 활용해서 원하는 장소의 지도를 불러온 후 결과 화면 인증샷

기본 미션

혼자공부하는 R 데이터분석 p.288 <좀 더 알아보기> 실습하고 결과 화면 인증샷 남기기
"그래프에 그래프 더하기"

 

ggplot 패키지는 레이어로 이루어집니다. 따라서 매핑한 그래프를 여러 개 겹쳐서 표현하는 것이 가능한데 오늘의 기본 미션은 이 방식을 이용하여 선 그래프와 산점도 그래프를 함께 그려보는 것입니다.

 

먼저 R 기본 제공 데이터 세트인 airquality 정보로 선 그래프를 그려보겠습니다.

>>> ggplot(airquality, aes(x = Day, y = Temp)) + geom_line()

x축은 Day로, y축은 Temp로 매핑하여 선 그래프를 그려보았습니다. ( + geom_line() )

 

 

그리고 다음은 같은 데이터 세트로 산점도를 그려보았습니다. ( + geom_point() )

>>> ggplot(airquality, aes(x = Day, y = Temp)) + geom_point()

 

아래와 같이 산점도가 완성되었습니다.

 

 

오늘의 미션은 이 두 그래프(선 그래프와 산점도)를 한 화면에 겹쳐 표현해보는 것을 확인하는 것입니다. 그래서 그래프 옵션 두 개를 + 기호로 연결해주었습니다. ( + geom_line() + geom_point() )

>>> ggplot(airquality, aes(x = Day, y = Temp)) + geom_line() + geom_point()

 

아주 간단하게 두 그래프를 겹쳐서 그려볼 수 있었습니다.

 

 

이 그래프를 조금 더 보기 명확하게 그리기 위해 선 그래프는 빨간색으로, 산점도의 점 크기를 조금 더 키워서 그래프를 그려보았습니다.

>>> ggplot(airquality, aes(x = Day, y = Temp)) + geom_line(color = "red") + geom_point(size = 3)

 


선택 미션

구글 API와 ggmap 패키지를 활용해서 원하는 장소의 지도를 불러온 후 결과 화면 인증샷

 

이번 선택 미션은 구글 지도 API를 발급 받아 ggmap 패키지를 이용합니다. 구글 지도 플랫폼 홈페이지에 회원가입을 하고 로그인을 했습니다. 

 

책에 있는 대로 회원 가입을 하고 API를 발급받으려고 했는데 [ 데모 빌드 ] 부분을 찾지 못해서 발급받는 데 애를 좀 먹었습니다. 어찌되었든 API 발급을 성공하고 ggmap 패키지로 제가 원하는 장소의 지도를 불러왔습니다. 제가 근무하는 대안교육기관 소명학교(구 소명중고등학교, 소명교육공동체: https://vccs.kr)의 위치를 표시해보겠습니다.

 

먼저 ggmap 패키지를 설치하고 로드했습니다.

 

>>> install.packages("ggmap")
>>> library(ggmap)

 

그런 다음 발급받은 사용자 API를 등록하였습니다.

 

>>> register_google(key = "사용자의 API 키")

 

지명 대신 좌표로 지도를 가져오기 위해 geocode() 함수를 이용해 학교의 위도와 경도 값을 가져오고, geom_point() 함수를 이용해 지도에 해당 위치를 점으로 표시해보겠습니다.

 

%>% 연산자를 사용하기 위해 dplyr 패키지를, geom_point() 함수를 사용하기 위해 ggplot2 패키지를 로드합니다.

 

>>> library(dplyr)
>>> library(ggplot2)

 

아래와 같이 입력하여 geo_code 안에 getcode() 함수로 위도, 경도 데이터를 가져옵니다.

그리고 as.numeric() 함수로 get_code 값(현재는 데이터 프레임)을 숫자형 벡터로 변환하여 geo_data에 저장합니다.

 

>>> geo_code <- enc2utf8("소명중고등학교") %>% geocode()
>>> geo_data <- as.numeric(geo_code)

 

이어서 책에 나온대로 get_googlemap() 함수와 ggmap() 함수를 이용하여 지도를 시각화한 후 geom_point() 함수로 소명학교의 위치에 점을 표시하기 위해 아래와 같이 입력을 했습니다.

>>> get_googlemap(center = geo_data, maptype = "roadmap", zoom = 13) %>% ggmap() + geom_point(data = geo_code, aes(x = geo_code$lon, y = geo_code$lat))

 

이렇게 입력해보았더니 지도를 조금 더 확대해보고 싶고, 점의 크기와 모양을 바꿔보고 싶어 인터넷 검색을 통해 옵션을 확인하고 다음과 같이 입력해보았습니다.

 

>>> get_googlemap(center = geo_data, maptype = "roadmap", zoom = 17) %>% ggmap() + geom_point(data = geo_code, aes(x = geo_code$lon, y = geo_code$lat), shape = 21, color='red', fill = 'white', size = 5, stroke = 5)

 

zoom 옵션을 17로 하여 지도를 확대하였고, color, fill, size, stroke, shape 옵션들을 적절히 변경해가며 지도를 꾸며(?) 보았습니다. 

 

 

이렇게 지도 불러오기를 성공하였습니다.

 

Warning messages:
1: Use of `geo_code$lon` is discouraged. Use `lon` instead. 
2: Use of `geo_code$lat` is discouraged. Use `lat` instead.

 

이런 경고 메시지가 등장하는데... 기분이 괜히 나쁘군요!

 


데이터 시각화에 관련하여 아래 책도 재미있습니다. 다양한 시각화 아이디어와 도구 활용법들을 배울 수 있습니다.

 

서평] 효과적인 데이터 시각화 전략 추천 책 - 핸즈온 데이터 시각화 Hands-On Data Visualization(한빛미디어)

 

[서평] 효과적인 데이터 시각화 전략 추천 책 - 핸즈온 데이터 시각화 Hands-On Data Visualization(한빛

효과적인 데이터 시각화 전략 20가지 시각화 도구 사용법 개인적으로 데이터 분석에 관심이 많습니다. 그래서 데이터 분석에 관한 여러 가지 툴과 기술에 대한 책들을 보며 공부하고 있습니다.

it4edu.tistory.com

 


 

혼공학습단 8기 6주간의 일정이 이번 미션으로 끝이 났습니다. 정말 7월, 8월이 후딱 지나간 느낌입니다. R의 무궁무진한 세계로 뛰어들기엔 아주 얕은 지식을 얻은 것 같지만 그럼에도 첫 발을 디딘 것만으로도 만족스런 시간들이었습니다. 더 마는 시간을 들여 공부하면서 R과 데이터 분석의 재미에 푹 빠져들고 싶습니다.

 

조만간 혼공단 8기 활동에 대한 후기도 작성해볼게요!!

 

함께한 모든 혼공단 여러분들, 그리고 애써주신 혼공족장님께도 감사를 드립니다! 

수고하셨습니다.

 

 

 

https://bit.ly/3Naykop

 

혼자 공부하는 R 데이터 분석 - YES24

혼자 해도 충분하다! 1:1 과외하듯 배우는 R 데이터 분석 자습서이 책은 독학으로 R 데이터 분석을 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻

www.yes24.com

반응형

댓글