많은 사람들이 R에서 시각화 패키지로 'ggplot2'를 사용합니다.
그 이유는 아마 기존 R패키지와는 달리, 예쁜 그래프를 보여줘서 그런거 같습니다.
ggplot을 썼구나를 알아채는 대표적인 방법은 뒤에 회색 그리드(격자무늬)가 생긴다는 것입니다.
ggplot 패키지의 트레이드 마크죠ㅎㅎ
그럼 이번에는 데이터 분석의 기초이자, 제일 중요한 EDA.
EDA 중에서도 ggplot을 이용한 그래프 그리기에 초점을 두겠습니다.
원리만 알면 ggplot 1도 어렵지 않아요!! (진심 x 100000000)
ggplot의 가장 큰 특징을 쉬운 말로 표현하면 '쌓는다'라고 보시면 될거 같습니다.
그래서 ggplot의 원리를 알면, 코드를 직관적으로 해석이 가능하고
반대로 원하는 그래프를 쉽게 만들 수 있어서 매우 좋습니다.
그럼 시작하겠습니다 :)
1단계 - x축, y축 설정
우리가 그림으로 그릴 수 있는 차원은 2차원이기 때문에,
ggplot은 2변량 혹은 1변량(변수가 2개냐 1개냐) 그래프를 그리는데 쓰입니다.
그렇다면, 2차원 그래프를 그리기 위해서 가장 중요한 것은 x축과 y축이겠죠??
맞습니다! 그래서 첫번째로 어떤 변수를 x축에, 어떤 변수를 y축에 그릴것인지가 제일 중요합니다!
이제 이걸 mapping이라고 하겠습니다. (*제 편의상 부르는 겁니다)
2단계 - 어떤 그래프를 그릴것인가?
두번째로 무엇이 중요할까요??
바로 우리가 그리고 싶은 그래프의 모양이겠죠!ㅎㅎ
1단계에서 어떤 변수를 x축 그리고 y축에 놓았으니 이제 이걸 그림으로 표현할 단계입니다.
막대 그래프, 박스 플롯, 산점도 등 다양한 그래프들이 있습니다.
2단계에서는 이제 어떤 그래프를 그릴지 정하는 단계입니다.
이제 이걸 제 편의상 geometric form이라고 부르겠습니다. (*이 역시 제가 막 지어낸 것입니다.)
3단계 - 기타 악세사리
마지막 3단계에서는 이제 기타 부수적인 단계 입니다.
음식을 만들 때, 마지막에 데코레이션을 하죠ㅎㅎ 딱 그 단계 입니다.
더 추가하고 싶은 것이 있으면 추가하고
바꾸고 싶은 것이 있으면 바꾸고
다듬는 과정이라고 보시면 될것 같습니다.
여기까지가 이론입니다.
그렇게 어렵지 않았죠?ㅎㅎㅎ
그럼 이제 코드를 차근차근 보면서 어떻게 원리가 적용되는지 살펴보겠습니다.
<ggplot 실습>
install.packages("ggplot2") #ggplot2 패키지가 없으신 분들은 패키지를 깔아주세요
library(ggplot2)
저희가 예시로 다룰 데이터는 'mpg'라는 데이터 입니다.
mpg 데이터는 ggplot2안에 내장되어 있는 데이터로,
1999년부터 2008년까지 인기가 있었던 38개 자동차에 대한 데이터 입니다.
mpg 데이터에 대해 더 자세히 알고 싶으신 분들은 아래와 같은 코드를 치시고 실행시키면
설명이 나옵니다.
data(mpg)
?mpg #데이터에 대해 궁금할때
head(mpg) #head는 데이터의 상위 6개 항목만 보여줍니다.
ggplot을 이용해 시각화 시작!
ggplot(data=mpg, aes(x=displ, y=hwy)) +
geom_point()
자자! 실행시키기 전에, 어떤 내용이 나올지 우리 상상해봅시다!ㅎㅎ
1단계!!! x축 y축 설정해야겠죠? 첫줄부터 기본 문법에 대해 살펴보겠습니다.
ggplot(사용할 데이터, aes(x축, y축))
aes는 aesthetic의 약자인 함수로, '심미적인' 뜻을 가지고 있습니다.
즉, aes 는 x축, y축 등 '미적 요소'라고 보시면 될거 같습니다.
2단계!! 이제 어떤 모양을 그릴건지 봐야겠죠.
geom_point()는 산점도입니다. geom은 geometry의 약자고 point는 점이니까 이해하기 쉬우시죠!
이제 어떤 모양이 나올지 상상이 되시나요?ㅎㅎ
aes안에 x=과 y=은 생략 가능합니다. 순서대로 변수명을 입력하면 알아서 x와 y로 받습니다.
첫째줄과 둘째줄은 '+' 로 이어줍니다!
이처럼 ggplot은 '쌓는다'의 말처럼 원하는 설정을 계속해서 쌓으면서 그래프를 만들어 나갑니다.
ggplot(data=mpg, aes(displ, hwy)) + #사용할 데이터는 mpg이고 x축은 displ이고 y축은 hwy 변수로 놓을래~ |
geom_point() #그리고 싶은 그래프는 산점도야~ |
ta-daa!!
+) 여기에서 응용!!
"근데, 저는요~ 자동차 별로 한 눈에 특징을 볼 수 있는 산점도를 그리고 싶어요"
그럼 이제 그래프에 색을 입혀 볼까요?
ggplot(data=mpg, aes(x=displ, y=hwy)) +
geom_point(aes(color=class))
잘 보시면 두번째 줄에 geom_point안에 aes(심미적인) 함수를 넣었습니다.
그리고 설정을 color = class로 놓았습니다.
상상이 되시나요?
geom_point안에 미적 요소를 넣을건데, class별로 색깔을 넣은 산점도를 원해! 라는 뜻이 되었습니다.
이-지 하죠?
ta-daa!!
ggplot2 패키지에서 제공하는 그래프 계열은 다음과 같습니다.
산점도 / 산포도 geom_point( )
선 그래프 geom_line( )
박스플롯 geom_boxplot( )
히스토그램 geom_histogram( )
막대 그래프 geom_bar( )
<코드 3줄 요약>
ggplot 첫줄에서는 큰 틀에서 x축과 y 축을 정의하고
두번째 줄에서는 그래프 모양을 그리고 그 그래프 안에서 어떻게 변화를 줄 것인지를 설정할 수 있습니다!
그리고 각 줄을 +로 쌓습니다.
사람마다 글씨체와 성격이 다르듯이, 코딩하는 방법도 각자의 특성이 있습니다.
저는 처음에 mapping에서 큰 틀로 x축과 y축을 먼저 넣는 것을 선호 합니다.
그 다음에 그래프를 선택하며, 그 그래프 안에서 어떻게 더 변경하고 수정할지를 정하는 편입니다.
결과는 하나지만 그 결과를 내기까지 사람마다 다 다른 코드를 가지고 있다는 뜻입니다.
여러분들도 하시면서 자기에게 더 맞는 더 편한 방법으로 코딩하시면 될것 같습니다 :)
여기까지 기초편이고 다음주엔 심화편으로 찾아오겠습니다.
더 많은 자료 및 다른 밑에 있는 주소(제 github입니다ㅎㅎ부-끄)에 오셔서
확인 하시면 될것 같습니다. follow는 언제나 환영입니다 :)
'R' 카테고리의 다른 글
[R] R Studio가 갑자기 느려질 때 (0) | 2019.06.11 |
---|---|
[R] 데이터 불러오기 (0) | 2019.05.29 |
[R]ggplot2에 대해 파헤쳐 보자!!(feat.실전편) (0) | 2019.05.24 |
[R]ggplot2에 대해 파헤쳐 보자!!(feat.심화편) (0) | 2019.05.23 |
[머신러닝] 회귀분석 in R (0) | 2019.05.12 |