이 블로그의 가장 첫 글이 ggplot2
로 boxplot
그려보기 였습니다. 이 패키지를 처음 익히고 시간이 지나니 헷갈리더군요. 관련하여 다시 복습하는 차원에서 튜토리얼을 따라 해보고 있습니다. ✍✍✍
튜토리얼은 3개로 나누어져 있고 각 튜토리얼마다 완료하면 전체 요약을 아아주 간단히 정리해보려고 합니다.🙂 오늘은 튜토리얼 Part1인 Introduction To ggplot2 입니다.
ggplot2 튜토리얼 바로가기
R은 통계 언어로 다양한 패키지에서 데이터 시각화를 제공합니다. 특히 ggplot2
고품질의 쉬운 조작방법으로 사용자들의 많은 💖을 받고 있지요. :-)
ggplot2
가 base Graphics
와 구분되는 가장 큰 특징은 아래와 같습니다.
아래 그림처럼 한번에 플롯을 모두 설정하는 것이 아닌, 레이어를 하나 하나 추가하면서 플롯을 점차적으로 완성시켜 나갑니다. 다양한 레이어들이 있어 원하는 그래프 내역을 조정할 수 있지요.
data.frame
만 받는다.ggplot2
는 오직 data frame
만 적용됩니다. 일단 gglot(data = dataframe)
으로 시작하고, dataframe
내 다양한 변수들을 x
, y
, legend
로 지정할 수 있습니다.
튜토리얼 실습을 하기에 앞서 필요한 패키지를 받고 관련된 사전 설명이 필요해 보여 따로 정리해보았습니다!
> library(ggplot2) # 플롯
> library(RColorBrewer) # 팔레트
> library(ggpubr) # 화면분할
# midwest counties의 Demographic information 데이터
> data("midwest", package = "ggplot2")
RColorBrewer
패키지에 대한 간단한 설명RColorBrewer
패키지는 그래픽에 활용할만한 다양한 색상 팔레트를 제공합니다. 직접 플롯에 들어갈 색을 지정해도 되지만, 이미 여러 색 조합이 조화롭게 만들어진 팔레트를 이용하면 더 빠르게 작업할 수 있겠지요. 🙂
# vbrewer.pal.info는 패키지에 저장되어 있는 객체이다
# 호출을 하면 팔레트에 대한 정보가 불러와진다
# BrBG, PiYG, PRGn 같은 것들이 팔레트 이름이다
> brewer.pal.info
maxcolors category colorblind
BrBG 11 div TRUE
PiYG 11 div TRUE
PRGn 11 div TRUE
PuOr 11 div TRUE
RdBu 11 div TRUE
RdGy 11 div FALSE
RdYlBu 11 div TRUE
RdYlGn 11 div FALSE
Spectral 11 div FALSE
Accent 8 qual FALSE
Dark2 8 qual TRUE
Paired 12 qual TRUE
Pastel1 9 qual FALSE
Pastel2 8 qual FALSE
Set1 9 qual FALSE
Set2 8 qual TRUE
Set3 12 qual FALSE
Blues 9 seq TRUE
BuGn 9 seq TRUE
BuPu 9 seq TRUE
GnBu 9 seq TRUE
Greens 9 seq TRUE
Greys 9 seq TRUE
Oranges 9 seq TRUE
OrRd 9 seq TRUE
PuBu 9 seq TRUE
PuBuGn 9 seq TRUE
PuRd 9 seq TRUE
Purples 9 seq TRUE
RdPu 9 seq TRUE
Reds 9 seq TRUE
YlGn 9 seq TRUE
YlGnBu 9 seq TRUE
YlOrBr 9 seq TRUE
YlOrRd 9 seq TRUE
# 위 모든 팔레트들의 색상표를 확인할 수 있다
> RColorBrewer::display.brewer.all()
# 팔레트 중 특정 하나만 선택하여 확인할 수 있다
# n에는 팔레트 내 색상의 수(5로 하면 왼쪽부터 5개), name은 팔레트 이름을 입력
> RColorBrewer::display.brewer.pal(n = 5, name = "Pastel1")
기본플랏은 par()
함수를 통해 화면 분할이 가능하죠. 그런데 ggplot2
는 안돼요. 저는 계속 왜 안되지 했어요.
대신, ggplot2
는 ggarrange()[in ggpubr]
, plot_grid() [in cowplot]
, grid.arrange() [in gridExtra]
을 사용하면 됩니다. 저는 이번 포스팅에선 ggarrange()[in ggpubr]
를 사용했어요.
참고 자료 > 바로가기
Arrange on one page 부분
# 예시
> gpubr::ggarrange(플롯명1, 플롯명2, ... , ncol = 2, nrow = 2)
사실 파트1의 튜토리얼은 어려운 수준이 아니기 때문에 짧게 정리하겠습니다.
ggplot2
로 차곡차곡 레이어 쌓기튜토리얼대로 사용한 산점도로 플롯을 만들었습니다.
midwest %>%
# midwest 데이터 지정
ggplot2::ggplot(mapping = aes(x = area, y = poptotal)) +
# x는 area, y는 poptotal로 지정
ggplot2::geom_point(aes(col = state), size = 3) +
# 산점도 그리기, 산점도의 색상은 state 변수에 따라 다르게, size는 3으로 지정
ggplot2::geom_smooth(method = "lm", col = "red", size = 0.5, fill = "pink") +
# 산점도 위에 선형 레이어 추가
# lm => Linear Model
ggplot2::coord_cartesian(xlim = c(0, 0.1), ylim = c(0, 1000000)) +
# 이상치로 인해 데이터가 잘 보이지 않아 그래프 확대
# xlim & ylim => x 및 Y축을 기준으로 확대할 min, max 값
ggplot2::labs(title = "Area VS Populatein", y = "Population", x = "Area", subtitle = "Midwest Demographics") +
# 라벨링
ggplot2::theme(legend.position = "NONE") +
# 범례지움
ggplot2::theme_classic() +
# 그래프 배경 테마 지정
ggplot2::scale_colour_brewer(palette = "Set3") +
# 그래프 색상(산점도의 점 색상)
ggplot2::scale_x_continuous(breaks = seq(from = 0, to = 0.1, by = 0.01), labels = letters[1:11]) +
# x축의 표시 구간(=>breaks)과 라벨(=>labels)
ggplot2::scale_y_continuous(breaks = seq(from = 0, to = 1000000, by = 200000), labels = function(x) {paste0(x/1000, "K")})
# y축의 표시 구간과 라벨
위 레이어링이 진화되는 각각의 플랏을 a
~ i
로 저장하여 화면분할하여 표현해보았습니다.
# 테마는 레이어링 하지 않고 미리 셋팅 가능
> ggplot2::theme_set(theme_classic())
# 각 레이어링을 a...i 객체에 저장하기
~생략~
# 화면 분할과 그래프 할당
# (귀찮아서 3x3 으로 했더니 그래프가 잘 안보여서 1x3으로 나눠서..)
> ggpubr::ggarrange(a, b, c, ncol = 1, nrow = 3)
> ggpubr::ggarrange(d, e, f, ncol = 1, nrow = 3)
> ggpubr::ggarrange(g, h, i, ncol = 1, nrow = 3)
공부 끝!