ggplot으로 그래프를 그릴 때, 특정 요인에 따라 같은 색을 지정해 줄 수 있다.
물론, ggplot 기본 그래프의 색상도 예쁜 편이지만, 더 다양한 색을 지정하고 꾸밀 수도 있다.
본 게시글은 ggplot에서 색상을 설정하는 함수에 대해 먼저 소개하고,
그다음에 산점도(point)와 막대그래프(bar)를 예시로 하여 상세 예시를 나타내고자 한다.
0. 준비
두 함수는 각각 colour와 fill로 설정된 값에 대한 색상을 변경하는 기능을 제공한다. 색상을 변경하기 위해서 palette 옵션을 사용할 수 있다.
- scale_colour_brewer()
- scale_fill_brewer()
palette 설정은 직접 원하는 색삭을 설정할 수도 있으며, RColorBrewer 패키지에 내장된 색상을 사용할 수도 있다.
YIOrRd ~ Blues는 서서히 변하는 색상으로, 순서 변수(ordered variable)에 따라 색을 연속적으로 나타낼 때 사용하면 좋다.
또, 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))
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)
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)
'R Programming > Data Visualization' 카테고리의 다른 글
[R ggplot2] 막대 그래프 기본 (그래프 순서, 텍스트, 그룹별까지) (2) | 2024.07.11 |
---|---|
[R] Error invalid graphics state (1) | 2023.12.20 |
[R] ggplot legend 범례 설정 (제목, 위치, 글씨) (0) | 2023.12.10 |
[R] 그래프 저장하기 png, jpeg, ggsave (0) | 2023.11.10 |
[R] 그래프 제목에 수식과 문자 함께 넣기: expression, paste (2) | 2023.11.09 |