본문 바로가기

[R] ggplot2 테마 적용으로 쉽게 그래프 꾸미기

R Programming/Data Visualization by Mandarim_ 2023. 11. 2.

ggplot2는 다양한 세부 옵션을 제공하지만, 너무 다양한 옵션을 제공하기에 사용자들을 번거롭게 만들 수 있다.

하지만 ggplot2에서 내장되어 있는 테마 옵션을 사용하면, 코드 한 줄로 기본 그래프보다 깔끔한 그래프를 그릴 수 있다.

 

본 게시글은 내장 테마 함수들을 사용하여, 더욱 보기 좋은 그래프를 그리는 법에 대해 소개한다.


1. 테마 적용하는 방법

ggplot2의 디폴트 테마는 아래처럼 배경색이 회색이다.

개인적으로 인쇄할 때, 프린터 잉크를 많이 써서 선호하진 않는다.

ggplot의 기본 설정이다.
ggplot의 default theme 설정

 

그래프에 ggplot2 내장 테마를 적용하는 방법엔 두 가지가 있다.

  1. 현재 세션에서 앞으로 출력할 모든 ggplot 그래프에 공통적으로 한 가지의 테마를 적용시키기
  2. 각 그래프마다 테마를 설정하기

아래 그림에서 그려지는 메인 눈금, 보조 눈금 또한 원래는 theme()의 옵션을 통해 직접 설정해주어야 하는 값이지만,

테마를 사용함에 따라 원하는 깔끔한 그래프를 쉽게 그릴 수 있다.

 

내가 가장 선호하는 테마는 theme_bw()이고, 항상 이 테마를 사용하여 그래프 그리기 때문에 ggplot2의 라이브러리 호출과 theme_set()은 거의 세트처럼 사용한다.

library(ggplot2)

data("iris")
g1 <- ggplot(data=iris, 
             aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point()

# (1)
theme_set(theme_bw())
g1

# (2)
g1 + theme_linedraw()

ggplot2의 theme_bw 설정ggplot2의 theme_linedraw 설정
각 코드의 실행 결과, 왼쪽 사진은 주석 (1) 아래의 g1이고 오른쪽 사진은 주석 (2) 아래의 g1이다.

 


2. 테마의 종류

ggplot2는 8가지의 다양한 내장 테마를 제공한다.

각 테마는 데이터 시각화의 목적에 따라 혹은 개인의 선호도에 따라 선택하여 사용 가능하다.

패널이 존재하는 그래프들에서 각 테마가 어떻게 그려지는지 아래에 정리하였다.

 

iris 데이터로 임의의 패널을 만들기 위해, 다음과 같이 전처리하였다.

iris_sepal <- iris[,c("Sepal.Length", "Sepal.Width", "Species")]
iris_petal <- iris[,c("Petal.Length", "Petal.Width", "Species")]

colnames(iris_sepal) <- c("Length", "Width", "Species")
colnames(iris_petal) <- c("Length", "Width", "Species")
iris_sepal$type <- "Sepal"
iris_petal$type <- "Pepal"

iris2 <- rbind(iris_sepal, iris_petal

# facet_grid 로 type에 대한 패널 그래프 생성
g2 <- ggplot(data=iris2, aes(x=Length, y=Width, color=Species)) + 
  geom_point() + facet_grid(.~type)

 

 

반응형

[1] g2 + theme_gray()

R의 기본 설정 값인 테마이다.

테마 설명으론 회색 배경과 흰색의 눈금선이 비교를 더욱 강조할 수 있다고 되어 있으나, 솔직히 잘 모르겠다.

주로 초보자들이 많이 사용하는 것 같아서 피하게 된다.

패널 그래프 gray 테마 사용
패널 그래프에 theme_gray() 적용


[2] g2 + theme_bw()

밝고 깔끔한 디자인이며, 개인적으로 가장 선호한다.

어떤 방해되는 부분 없이 데이터에 집중할 수 있으며,

눈금선 또한 회색으로 그려져 있어 각 데이터의 값을 헷갈리지 않게 한다.

패널 그래프에 theme_bw 테마 적용함
패널 그래프에 theme_bw() 적용


[3] g2 + theme_linedraw()

[2] theme_bw() 와 달리 눈금선이 검은색으로 그려져 있다.

해당 테마 또한 눈금선이 매우 중요한 경우가 아니라면, 제한적으로 사용되는 것 같다.

패널 그래프에 theme_draw 테마 적용함
패널 그래프에 theme_linedraw() 적용


[4] g2 + theme_light()

매우 깔끔한 디자인이며, [2]의 theme_bw()보다 배경 색이 옅다는 특징이 있다.

theme_light() 또한 어떤 방해되는 부분 없이 데이터에 집중할 수 있으며,

눈금선 또한 회색으로 그려져 있어 각 데이터의 값을 헷갈리지 않게 한다.

패널 그래프에 theme_light 테마 적용함
패널 그래프에 theme_light() 적용


[5] g2 + theme_dark()

theme_gray() 테마보다 더욱 어두운 버전이다.

실제로 사용되는 것을 거의 본 적이 없다.

패널 그래프에 theme_dark 테마 적용함
패널 그래프에 theme_dark() 적용


[6] g2 + theme_minimal()

축에 대한 선이나 없으며, 정말 최소한으로 필요한 요소만 남겨둔 테마이다.

패널 그래프에 theme_minimal 테마 적용함
패널 그래프에 theme_minimal() 적용


[7] g2 + theme_classic()

x축, y축만 존재하며, 그래프 내의 눈금선 나타내진 않는다.

패널 그래프에 theme_classic 테마 적용함
패널 그래프에 theme_classic() 적용


[8] g2 + theme_void()

눈금선과 x축, y축 모두 없는 테마이며, 이 또한 실제로 사용하는 사람을 거의 본 적 없다.

패널 그래프에 theme_void 테마 적용함
패널 그래프에 theme_void() 적용

반응형