
예시 데이터 : https://www.kaggle.com/prathamtripathi/drug-classification
ggplot2에서는 geom_histogram(), geom_boxplot(), geom_bar() 등의 함수 안에서 fill 인자를 통해 직접적으로 색을 칠할 수 있지만, 보통은 ggplot() 함수에서 fill 인자를 통해 색을 구분하게 됩니다.
다만 기본 색상은 항상 같기 때문에 어느 함수를 사용하던 아래와 같은 기본 색상으로 색이 채워지게 됩니다.
drug %>% ggplot(aes(x=Drug, fill = Drug)) + geom_bar()

위의 그래프와 같이 ggplot() 함수의 fill 인자에 범주형 변수를 넣어주게 되면 지정된 default 색상을 바탕으로 각 그룹을 구분해주게 됩니다.
하지만 색상은 구분해주고 싶지만 일일이 색을 채워주기 번거로울 때 바로 palette를 사용하게 되면 아주 유용합니다.
scale_fill_brewer() 함수에서 palette 인자에 여러 개의 팔레트 색상 중 원하는 하나를 지정해주게 되면, 지정된 팔레트 색상을 반영하여 그룹을 구분해주게 됩니다.
팔레트 색상 리스트는 구글에 찾아보시면 바로 확인하실 수 있으며, 만약 direction 인자에서 -1을 입력하면 기존의 팔레트 색상에서 역순으로 색이 채워지게 됩니다.
한 번 palette를 활용해 막대 그래프를 그려보도록 하겠습니다.
drug %>% ggplot(aes(x=Drug, fill = Drug)) + geom_bar() + scale_fill_brewer(palette = "RdPu")

scale_fill_brewer() 함수의 palette 인자에 "RdPu"를 입력하였더니 지정된 팔레트 색상으로 색이 채워진 것을 보실 수 있습니다.
이 상태에서 direction 인자에 -1을 입력해보겠습니다.
drug %>% ggplot(aes(x=Drug, fill = Drug)) + geom_bar() + scale_fill_brewer(palette = "RdPu", direction = -1)

보시다싶이 direction 인자에 -1을 입력하니 기존의 RdPu 팔레트 색상의 역순으로 색이 채워졌습니다.
scale_fill_brewer() 함수의 장점은 어떤 그래프 형태이든 그룹의 구분이 필요한 상황이라면 사용할 수 있다는 점입니다.
이번에는 막대 그래프가 아닌, 다른 그래프 형태를 scale_fill_brewer() 함수를 통해 그려보겠습니다.
drug %>% ggplot(aes(x=Age, fill = Drug)) + geom_density() + facet_grid(Drug ~.) + scale_fill_brewer(palette = "RdPu")

이처럼 facet_grid() 함수를 사용한 그룹 별 밀도 곡선에서도 palette를 활용하여 색을 구분해줄 수 있습니다.
다만 눈치채신 분들이 있으시겠지만, scale_fill_brewer() 함수를 사용하기 위해서는 기본적으로 ggplot() 함수의 fill 인자에 범주형 변수가 지정되어 있어야 합니다.
scale_fill_brewer() 함수는 이미 채워진 색을 팔레트 색상으로 덧칠하는 기능이기 때문에, 기본적으로 ggplot() 함수에서 fill 인자를 채워주셔야 합니다.
이렇게 ggplot2에서 palette 색상을 활용하는 법을 알아보았습니다. 감사합니다.