본문 바로가기

[R] ggplot 색 변경 color & palette 설정

R Programming/Data Visualization by Mandarim_ 2023. 12. 10.

ggplot으로 그래프를 그릴 때, 특정 요인에 따라 같은 색을 지정해 줄 수 있다.

물론, ggplot 기본 그래프의 색상도 예쁜 편이지만, 더 다양한 색을 지정하고 꾸밀 수도 있다.

 

본 게시글은 ggplot에서 색상을 설정하는 함수에 대해 먼저 소개하고,

그다음에 산점도(point)와 막대그래프(bar)를 예시로 하여 상세 예시를 나타내고자 한다.


0. 준비

두 함수는 각각 colour와 fill로 설정된 값에 대한 색상을 변경하는 기능을 제공한다. 색상을 변경하기 위해서 palette 옵션을 사용할 수 있다.

  • scale_colour_brewer()
  • scale_fill_brewer()

palette 설정은 직접 원하는 색삭을 설정할 수도 있으며, RColorBrewer 패키지에 내장된 색상을 사용할 수도 있다.

YIOrRd ~ Blues는 서서히 변하는 색상으로, 순서 변수(ordered variable)에 따라 색을 연속적으로 나타낼 때 사용하면 좋다.

palette 예시
RColorBrewer Palette 예시

 

또, palette가 아닌, 직접 원하는 색상을 지정하여 그래프의 색상을  manual()함수의 values 옵션을 통해 지정할 수도 있다.  색상의 구분이 colour/fill인지에 따라 다음과 같은 함수를 사용할 수 있다.

  • scale_colour_manual()
  • scale_fill_manual()

오늘 시각화 예시로 사용하고자 하는 데이터는 다음과 같고, 그래프 각각의 출력물은 다음과 같다.

library(ggplot2)
library(RColorBrewer)

head(mtcars[, c("mpg", "wt", "carb", "gear")])
# mpg    wt carb gear
# Mazda RX4         21.0 2.620    4    4
# Mazda RX4 Wag     21.0 2.875    4    4
# Datsun 710        22.8 2.320    1    4
# Hornet 4 Drive    21.4 3.215    1    3
# Hornet Sportabout 18.7 3.440    2    3
# Valiant           18.1 3.460    1    3

mtcars$carb <- factor(mtcars$carb)
mtcars$gear <- factor(mtcars$gear)

gg_point <- ggplot(mtcars) +
  geom_point(aes(x = wt, y = mpg, colour = carb))
  
gg_bar <- ggplot(mtcars) +
  geom_bar(aes(x = carb, fill=gear))

 

산점도 그래프 예시기본 막대 그래프
ggplot 기본 색상 확인. 왼쪽 (gg_point), 오른쪽 (gg_bar)


1. 산점도 예시 (geom_point)

산점도 그래프는 다음과 같다. 일반적으로 colour를 통해 변수에 따라 구분하는  line 그래프 또한 동일하게 적용된다.

gg_point + scale_colour_brewer(palette="Paired")
gg_point + scale_colour_brewer(palette="Set2")

my_pal <- c("red", "green", "blue")
gg_point + scale_colour_brewer(my_pal)

 

set2 palette 적용한 산점도my_pal 적용한 그래프
차례대로 Paired, Set2 팔레트와 색을 직접 지정하여 그린 그래프.

 


2. 막대 그래프 예시 (geom_bar)

막대그래프는 다음과 같다. fill이 적용되는 geom_area() 등 모두 같은 코드 구조로 작동된다.

gg_bar + scale_fill_brewer(palette="Greens")
gg_bar + scale_fill_brewer(palette="YlOrRd")

my_pal <- c("orange", "yellow", "pink")
gg_bar + scale_fill_manual(values=my_pal)

 

Greens palette 설정한 막대그래프YlORRd palette 설정한 막대그래프팔레트 직접 설정한 막대그래프
차례대로 Greens, YlOrRd 팔레트와 색을 직접 지정하여 그린 그래프.

반응형