데이터과학 기초/R배우기

ggplot 쉽게 배우기 (1) - 기본구조

eigenvector 2022. 7. 2. 21:24
반응형

ggplot? matplotlib? seaborn?

개인적으로 Python을 주로 사용하지만, 시각화 과정에서 R을 사용하는 경우가 많습니다.

 

Python 패키지인 matplotlib이나 seaborn이 있지만, R의 ggplot이 강력한 성능을 가지고 있기 때문인데요.

 

특히, 폰트, 기본 테마 설정과정에서 상대적으로 ggplot이 간단하기 때문에

 

시각화 강의나 간단한 설명 자료를 만들때 ggplot를 추천하는 경우가 많습니다.

 

(인터렉티브 시각화에서는 python 패키지인 plotly나 altair를 추천하거나, 통합해서 Tableau를 추천하기도 합니다)

 

다만, ggplot의 경우 처음에 기본 문법을 이해하기 어렵기에 쉽게 손이 가지 않는데요.

 

강의를 하면서 많이 받았던 질문을 기준으로 간단한 ggplot 강의를 준비했습니다.

 

 


ggplot 세팅하기 (라이브러리)

ggplot이란 통계 프로그램인 r의 라이브러리로 간편하고 빠르게 시각화를 수행하기에 적합한 도구입니다.

 

r기반으로 작동하기 때문에, 당연히 r을 설치할 필요가 있고 Rstudio를 같이 설치해야 사용할 수 있습니다.

 

본 포스팅에서는 R과 Rstudio이 설치되어 있고 기본적인 라이브러리를 설치했다고 가정하겠습니다.

(설치 과정은 제가 나중에 업로드할 R세팅 강의를 참조해 주시면 됩니다)

 

라이브러리는 나중에 추가되지만, 일단 ggplot을 포함한 통합 패키지인 tidyverse를 불러오는데서 시작합니다.

 

library(tidyverse)

 

 

이제 데이터를 세팅해 보겠습니다.

 


시각화 대상 데이터 불러오기

데이터셋을 불러오기 번잡하니 R 제공 기본 데이터셋 중 하나인 mpg 데이터셋을 활용하겠습니다.

 

기본 데이터 구조에 대해서는 나중에 업로드할 tidydata 설명을 참고하시고 일단 바로 데이터를 불러와 봅시다.

 

mpg # 이 상태에서 그냥 ctrl + enter를 입력하면 됩니다

 

데이터의 간단한 내용이 확인됩니다.

 

자세히 알기 위해 데이터 세부 설명을 불러와 봅시다.

 

?mpg # R 기본 데이터셋이기 때문에 ?를 붙이면 설명이 나옵니다.

 

데이터셋의 각 값에 대한 간략한 설명이 나옵니다(분량 상 적지 않겠습니다)

 

내용을 확인하면, 차량의 연료 효율과 관련된 데이터인것 확인할 수 있군요(모델, 배기량, 연도 등을 보면 알 수 있죠?).

 

1) 패키지를 로드하고 2) 데이터를 불러온 후 3) 세부적인 데이터 설명을 파악했으니

 

이제 기본적인 시각화를 수행할 준비가 됐습니다.

 


ggplot 기초구조

ggplot은 "데이터를" + "배치해서" + "표현하는" 식으로 작동합니다.

 

즉, 저 3개의 조건에 맞는 값만 넣으면 어떻게든 시각화가 됩니다 (디테일이 생명입니다만....)

 

간단하게 "배기량(displ)"과 "연비(hwy)"의 상관관계를 "점 표시"(산점도)로 확인해 볼까요?

 

데이터 : mpg

배치 : 배기량을 x축에, 연비를 y축에

표현 : 점 표시

 

단계별로 테스트 해 보도록 하죠

 

####### 데이터
ggplot(data = mpg) # 실행은 가능하지만, 아무것도 나오지 않음

####### 데이터 + 배치
ggplot(data = mpg,
       mapping = aes(displ)
       ) # x축은 설정됐지만, 여전히 값은 나오지 않음

ggplot(data = mpg,
       mapping = aes(x= displ, y = hwy)
       ) # x,y 축이 설정됐지만, 값이 나오지 않음

####### 데이터 + 배치 + 표현
ggplot(data = mpg,
       mapping = aes(x= displ, y = hwy)) +
  geom_point() # 데이터 + 배치 + 표현 = 시각화 성공(!)

 

마지막 코드 블럭을 실행시키면 다음과 같이 시각화가 나타납니다(!)

 

배기량과 연비의 관계를 확인하는 Scatter Plot

첫 시작치고는 나쁘지 않습니다.

 

이제 구체적인 코드 구조를 확인해 봅시다.

 


코드 구조 분석

마지막 코드를 실행한 결과 시각화가 됐습니다. 좀 더 세부적으로 분해해서 볼까요?

데이터 세팅과 배치는 같은 블록 안에, 표현 방식은 따로 구성하며 연결은 + 표시로 이뤄지는 것을 볼 수 있습니다.

 

이 구조를 항상 디폴트로 생각하는 것이 중요한데

 

1. [데이터 세팅, 배치, 표현방식] 이라는 구조가 명확하다면 data, mapping과 같은 요소는 생략할 수 있습니다

 

ggplot(mpg,aes(x= displ, y = hwy)) + geom_point() # 간략화 코드

 

2. 큰 블럭 단위(데이터세팅, 배치)를 한 변수에 할당하고, 표현방식과 디테일을 수정하는 접근이 가능합니다

base <- ggplot(mpg,aes(x= displ, y = hwy)) # 앞의 블럭을 base 변수에 할당

base + geom_point() # 할당된 변수의 디테일 추가

앞으로 나올 다양한 시각화 바리에이션의 기본이 되기 때문에, 이 구조를 항상 기억하고 있는 것이 좋습니다.

 


정리

ggplot은 효율적인 시각화 도구로 R과 라이브러리가 설치되어 있는 경우 쉽게 사용 가능합니다.

 

ggplot은 "데이터/배치/표현방식"의 기본 구조로 작동합니다.

 

그렇다면, 이런 구조로 어떻게 다양한 시각화/디테일 수정이 가능할까요?

 

다음 포스팅(+시리즈)를 통해 많이 사용되는 시각화와 디테일 수정을 차근차근 공부해 보도록 하겠습니다.

반응형