colorspace 팔레트
패키지 colorspace
install.packages('colorspace')
패키지 colorspace
의 choose_palette()
함수를 이용하면, 직접 팔레트를 만들 수 있습니다.
팔레트
-
하지만 기존의 팔레트 중의 하나를 골라 쓰는 게 더 편할 수 있습니다.
-
패키지
colorspace
에는 패키지RColorBrewer
,rcartocolor
,scico
,viridis
의 팔레트를 지원하고 있습니다. (완전히 동일하지는 않습니다.) -
이들은 팔레트 종류에 따라
qualitative_hcl()
,sequential_hcl()
,diverging_hcl()
를 사용하여 얻을 수 있습니다.
library(colorspace)
# 예를 들어 범주형 팔레트 Harmonic에서 5개의 색상을 얻으려면
qualitative_hcl(n=5, palette='Harmonic')
## [1] "#C7A76C" "#99B56B" "#5CBD92" "#3BBCBF" "#7DB0DD"
- 만약
colorspace
에서 지원하는 팔레트를 모두 보고 싶다면hcl_palettes()
를 사용합니다.
#RColorBrewer::brewer.pal.info
(pal <- hcl_palettes())
## HCL palettes ## ## Type: Qualitative ## Names: Pastel 1, Dark 2, Dark 3, Set 2, Set 3, Warm, Cold, Harmonic, ## Dynamic ## ## Type: Sequential (single-hue) ## Names: Grays, Light Grays, Blues 2, Blues 3, Purples 2, Purples 3, Reds ## 2, Reds 3, Greens 2, Greens 3, Oslo ## ## Type: Sequential (multi-hue) ## Names: Purple-Blue, Red-Purple, Red-Blue, Purple-Orange, Purple-Yellow, ## Blue-Yellow, Green-Yellow, Red-Yellow, Heat, Heat 2, ## Terrain, Terrain 2, Viridis, Plasma, Inferno, Dark Mint, ## Mint, BluGrn, Teal, TealGrn, Emrld, BluYl, ag_GrnYl, Peach, ## PinkYl, Burg, BurgYl, RedOr, OrYel, Purp, PurpOr, Sunset, ## Magenta, SunsetDark, ag_Sunset, BrwnYl, YlOrRd, YlOrBr, ## OrRd, Oranges, YlGn, YlGnBu, Reds, RdPu, PuRd, Purples, ## PuBuGn, PuBu, Greens, BuGn, GnBu, BuPu, Blues, Lajolla, ## Turku ## ## Type: Diverging ## Names: Blue-Red, Blue-Red 2, Blue-Red 3, Red-Green, Purple-Green, ## Purple-Brown, Green-Brown, Blue-Yellow 2, Blue-Yellow 3, ## Green-Orange, Cyan-Magenta, Tropic, Broc, Cork, Vik, ## Berlin, Lisbon, Tofino
Volcano
데이터 Volcano
는 오크랜드(Auckland)의 화산 지형 자료입니다. 내장 함수 image()
를 통해 간단하게 시각화시킬 수 있습니다.
#image(volcano)
image(volcano, col=heat.colors(n=100))
#image(volcano, col=topo.colors(n=100))
#image(volcano, col=terrain.colors(n=100))
#image(volcano, col=cm.colors(n=100)) # Cyan and Magenta?
#image(volcano, col=rainbow(n=100))
여기서는 ggplot() + geom_tile()
로 시각화 해보겠습니다. 일단 geom_tile()
에 적절하게 데이터를 변형합니다.
library(dplyr)
library(tidyr)
library(stringr)
volcano = volcano-mean(volcano)
vol <- as.data.frame(volcano) %>% mutate(y = 1:nrow(.))
vol <- vol %>% gather(-y, key="key", value="value")
vol <- rename(vol, x=key) %>% mutate(x = as.numeric(str_replace(x, "V", "")))
그리고 ggplot() + geom_tile()
에 + theme()
를 하여 보기 좋기 시각화 해봅니다.
library(ggplot2)
g <- ggplot(data=vol, aes(x=x, y=y, fill=value)) + geom_tile() + # 기본 ggplot() + geom_tile()
coord_fixed(ratio=1) + # 가로/세로 비율을 1로 고정
theme_minimal() + # 테마 최소화
guides(fill='legend') + # 연속형이 아니라 범주형 범례
labs(x='', y='')+#, title='YlOrRd') + # x, y축에 x, y 제거
theme(legend.position="bottom", # 범례 아래 쪽에
legend.justification="center", # 범례 좌우정렬 = 중앙
legend.margin=margin(0,0,0,0), # 범례 주위 여백 관련
legend.box.margin=margin(-30,10,10,10)) +
#theme(axis.text.x = element_text(angle = 0, hjust = 1, size = 1, vjust=1, margin=margin(0,0,0,0)))
theme(axis.text.x = element_text(vjust=5, margin=margin(0,0,0,0))) + # x, y축 레이블에 대한 미세 조정
theme(axis.text.y = element_text(hjust=1.7, margin=margin(0,0,0,0))) +
theme(plot.title = element_text(margin=margin(20,0,-10,0), size=20, hjust=0)) # 제목 크기 및 위치 조정
print(g)
이 그래프에 여러 가지 팔레트를 적용해 보겠습니다. ggplot2()
에 적용할 때에는 scale_xxxx_yyyyyyyy_zzzzzzz()
꼴의 함수가 준비되어 있습니다.
xxxx
:ggplot2
의 Aesthetic(예.color
,fill
, 등)yyyyyyyy
: 변수의 종류(예.continuous
,discrete
)zzzzzzzz
: 팔레트 종류(예.diverging
,divergingx
,qualitative
,sequential
)
순위형(Sequential)
단색상(single hue) : scale_fill_continuous_sequential()
단색 순위형 팔레트에는 Grays, Light Grays, Blues 2, Blues 3, Purples 2, Purples 3, Reds 2, Reds 3, Greens 2, Greens 3, Oslo가 있습니다.
multi-hue : scale_fill_continuous_sequential()
발산형(Diverging)
발산형(Diverging) 팔레트는 Blue-Red, Blue-Red 2, Blue-Red 3, Red-Green, Purple-Green, Purple-Brown, Green-Brown, Blue-Yellow 2, Blue-Yellow 3, Green-Orange, Cyan-Magenta, Tropic, Broc, Cork, Vik, Berlin, Lisbon, Tofino가 있습니다. 발산형은 0에 해당하는 색이 흰색 또는 검정색임을 확인할 수 있습니다.
+ scale_fill_diverging(palette= )
+ scale_fill_divergingx(palette= )
다음은 다른 종류의 발산형 팔레트입니다. ArmyRose, Earth, Fall, Geyser, TealRose, Temps, Tropic, PuOr, RdBu, RdGy, PiYG, PRGn, BrBG, RdYlBu, RdYlGn, Spectral, Zissou 1, Cividis가 있습니다.
범주형(Qualitative)
마지막으로 연속형 자료에 그리 적합하지는 않지만 범주형 팔레트를 사용할 수도 있습니다.
범주형(Qualitative) 팔레트는 Pastel 1, Dark 2, Dark 3, Set 2, Set 3, Warm, Cold, Harmonic, Dynamic이 있습니다.
g + scale_fill_continuous_qualitative(palette ='Pastel 1') +
labs(title=' Pastel 1')
g + scale_fill_continuous_qualitative(palette ='Dark 2') +
labs(title=' Dark 2')
g + scale_fill_continuous_qualitative(palette ='Dark 3') +
labs(title=' Dark 3')
g + scale_fill_continuous_qualitative(palette ='Set 2') +
labs(title=' Set 2')
g + scale_fill_continuous_qualitative(palette ='Set 3') +
labs(title=' Set 3')
g + scale_fill_continuous_qualitative(palette ='Warm') +
labs(title=' Warm')
g + scale_fill_continuous_qualitative(palette ='Cold') +
labs(title=' Cold')
g + scale_fill_continuous_qualitative(palette ='Harmonic') +
labs(title=' Harmonic')
g + scale_fill_continuous_qualitative(palette ='Dynamic') +
labs(title=' Dynamic')
이상으로 패키지 colorspace
의 팔레트를 Volcano
에 적용해 보았습니다.
<참고링크>
-
http://colorspace.r-forge.r-project.org/articles/colorspace.html
-
다음의 링크에서 좀 더 큰 그림으로 팔레트 적용 결과를 확인할 수 있습니다.
Leave a comment