ggplot 그래프에 색상 적용법(viridis, brewer scales)

그래프를 만들 때 구도를 정하는데도 시간이 많이 걸리지만, 어떤 색상을 사용할지 고민 하는 시간이 훨씬 더 많은 편이다. 왜냐하면, 색상을 어떤 걸 사용하는지에 따라 촌스러운 그래프가 될 수도, 아니면 감각적인 그래프로 보일 수도 있기 때문이다. 그래서 이런 부분에 시간을 할애하는 편인데, 디자인에 조예가 깊지 않아 결과물에는 크게 영향을 미치지 않는다. 그런 나에게 색상선정 고민을 없애주는 함수가 있어 간단하게 정리해본다. 사용한 프로그램은 R프로그램이며, ggplot2 패키지를 사용하였다.

viridis scales

연속된 수치에 색상을 매핑하는 경우 viridis 스케일을 사용하는 편이다. 하나의 예시로 22대 총선 사전투표율을 지역별로 막대그래프로 만들어봤다. 사용법은 아래 포스팅에 작성한 적이 있다.

(ggplot2) scale_fill_viridis_d 지도 색상 설정

viridis 색상 스케일은 scale_fill_viridis_c, scale_fill_viridis_d 두 개 함수를 사용하면 된다. 이 함수들을 사용하면 알아서 색상이 범위에 맞춰 셋팅되기 때문에, 실질적으로 어떤 색상이 사용되는지 해시값을 알 수는 없다. 일부 색상을 편집해서 조합해 사용하고 싶을 때가 있었는데, 이런 경우에는 pal_viridis 함수를 이용하면 아래처럼 색상을 뽑아낼 수 있다.

> scales::pal_viridis(option = "D")(10)
[1] "#440154FF" "#482878FF" "#3E4A89FF" "#31688EFF" "#26828EFF" 
[6] "#1F9E89FF" "#35B779FF" "#6DCD59FF" "#B4DE2CFF" "#FDE725FF"

색상을 직접 보고 싶다면, show_col() 을 사용하면 된다.

scales::show_col(scales::pal_viridis(option = "D")(10))

brewer scales

주로 비연속적인 데이터, 즉 코드나 문자열 기준의 데이터를 기준으로 색상을 표현하는 경우 brewer 스케일을 사용하고 있다. R 함수로는 scale_fill_brewer를 사용하면 되고, palette 파라메터에 색상테마를 지정하면 된다. 색상 테마는 꽤나 많으니 골라가며 적용해보면 된다.

# Diverging
BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral

# Qualitative
Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3

# Sequential
Blues, BuGn, BuPu, GnBu, Greens, Greys, 
Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, 
RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd

예를 들어 Puples 를 확인해보자. 그리고 brewer 스케일의 경우, 개수가 한정되어 있다. 테마별로 다른데, 9~12개가 최대이니 참고하여 사용해야 한다.

> scales::pal_brewer(palette = "Purples")(9)
[1] "#FCFBFD" "#EFEDF5" "#DADAEB" "#BCBDDC" "#9E9AC8" 
[6] "#807DBA" "#6A51A3" "#54278F" "#3F007D"

show_col로 색상을 확인해본다.

scales::show_col(scales::pal_brewer(palette = "Purples")(9))


더 보면 좋을 글들