본문 바로가기
PROGRAMMING/R

[R] ggplot2(ggplot) 활용하여 그래프 그리기

by HYUNHP 2022. 1. 15.
반응형

안녕하세요, HELLO

R의 기본 그래프 함수는 별다른 패키지를 설치하지 않아도 그래프를 생성할 수 있지만 색, 디자인 등을 모두 직접 설정해야 되는 등의 어려움이 있습니다. 그래서 R에서는 복잡한 그래프 생성 및 별다른 설정 없이도 예쁜 디자인을 만들 수 있는 ggplot2을 활용해서 그래프를 그릴 수 있습니다. ggplot2는 그래프 요소들을 함수로 분리하고 층(layer)을 쌓듯이 '+' 기호를 활용하여 여러 함수들을 연결하여 그래프를 더해가며 그려갈 수 있습니다. 오늘은 그래프 디자인 라이브러리 ggplot2를 정리하려고 합니다.

 


STEP 1. 'ggplot2 라이브러리' 개념

 

STEP 2. 'ggplot2 라이브러리' 설명

 


STEP 1. 'ggplot2 라이브러리' 개념

 

R의 그래프 디자인 라이브러리 ggplot2는 리린드 윌킨슨(Leland Wilkinson)이 쓴 데이터 시각화 이론서(Grammer of Graphics)를 기반으로 뉴질랜드의 통계학자 해들리 위컴(Hadley Wickham)에 의해 개발되었습니다. 가장 큰 특징은 그래프 요소들을 함수로 분리하고 층(layer)을 쌓듯이 '+' 기호로 함수들을 연결해 그래프를 완성해 나가는 것입니다.

 


STEP 2. 'ggplot2 라이브러리' 설명

 

CHAPTER 1. 패키지 설치 및 로드


본격적으로 설명하기에 앞서 라이브러리를 설치하겠습니다.

 

# ggplot2 설치
install.packages("ggplot2")

# library 호출
library(ggplot2)​

 


CHAPTER 2. 그래프에 적용할 데이터 설정

 

본격적으로 설명하기에 앞서 'ggplot 함수'의 핵심 파라미터를 확인해보겠습니다.

 

ggplot(data, aes(x, y, ..))
data 그래프에 사용할 데이터프레임
aes(x, y, ..) 그래프 전체에 적용할 연결 정보
* 추가적인 그래프, 디자인은 '+' 기호를 합쳐 만들어집니다.

ggplot 함수는 테이블 타입의 데이터를 사용할 수 없기에, 데이터프레임으로 변환해서 사용해야 합니다. 본격적으로 데이터를 입력하면서 ggplot 함수를 적용해 보겠습니다.

 

# 데이터 설정 (알파벳)
data = c('A','B','O','AB','A','B','AB','O','AB','A','B','AB',
         'B','O','AB','A','B','O','B','O','B','B','O','O',
         'AB','A','B','AB','O','AB','A','B','O','B','O','B')

# table 함수의 결과값 적용된 테이블
classtable <- table(data)
classtable

# 데이터프레임 변환
classdf <- as.data.frame(classtable)
classdf

# ggplot 함수가 적용될 공간을 aes를 통해 x축, y축에 지정
ggplot(classdf, aes(x=data, y=Freq))

 

데이터프레임을 지정해서, 향후 그래프를 더할 공간을 aes에 지정했습니다. x축과 y축을 지정하면 아래와 같은 빈 공간이 그려집니다.


CHAPTER 3. ggplot 그래프 종류 선택

 

이후에 ggplot으로 생성된 공간에 geoms 계열 함수(geom으로 시작하는 그래프)를 연결하여 그래프를 그릴 수 있습니다. 대표적인 함수에는 geom_line, geom_point, geom_col, geom_histogram, geom_boxplot 등이 있습니다. 이번에는 막대차트를 활용해서 범주형 데이터를 표현하고자 합니다. 

생성된 막대차트에 혈액형을 색상으로 구분하기 위해, geom_col 함수에 aes 항목에 그래프의 색상 설정(fill)을 추가해 연결해보겠습니다. 그리고 그래프의 제목과 범례, 축 등의 성분을 추가해보겠습니다.

 

# 색상 추가 aes(fill = )
# 그래프 제목, 부제목 설정 ggtitle()
# 그래프 범례, 축 내용 labs()
ggplot(classdf, aes(x=data, y=Freq)) + 
  geom_col(aes(fill=data)) +
  ggtitle("Bloodtype", subtitle = '11.2021') +
  labs(x="people", y="number", fill = 'types')


CHAPTER 4. '+' 기호의 위치

 

여러 줄로 코드를 작성하게 될 경우, 함수들을 연결하는 '+' 기호는 이전 함수와 동일한 행에 위치해야 합니다. 만약에 행이 시작하는 위치에 '+' 기호가 위치하면, ggplot 함수들을 연결하는 기호가 아닌 별개의 명령어롤 인식해 오류가 발생합니다. 그래프 작성할 때는 '+' 위치에 주의하시기 바랍니다.

 

# error situation
ggplot(classdf, aes(x=data, y=Freq))
+ geom_col(aes(fill=data))

Run `rlang::last_error()` to see where the error occurred.

 


■ 마무리

오늘은 R에서 그래프를 그릴 때 사용하는 라이브러리 'ggplot2'에 대해서 알아봤습니다.

좋아요댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글