ggplot2를 사용하다 보면 가끔 라인이나 채우기 색깔을 바꾸고 싶은 경우가 있다. 바꾸는 방법은 geom_bar()나 geom_line() 등에 전달인자로 fill, colour 등을 바꾸어줄 수도 있고, scale_fill_ 또는 scale_colour_ 등으로 시작하는 함수를 사용할 수도 있다.
일단 몇개 테스트 데이터를 만든다. 여기서 사용한 모든 샘플과 색깔은 Cookbook for R - Colours (ggplot2)에서 가져왔다. (시인성 좋은 색깔 샘플들이 많으니 이 사이트를 꼭 한번 확인해 보자.)
막대 그래프를 그려보면 ggplot2에 default로 설정된 색깔로 이쁘게 그려준다.

처음에 그렸던 막대 그래프에 검은색으로 테두리를 쳤다. 이건 geom_bar()함수에 colour 전달인자로 색깔을 지정해 주는 방법이다. "black"처럼 미리 지정된 내용을 쓰거나, "#FF0000"처럼 RGB 코드값을 넣어주면 된다.

이제 본격적으로 색깔을 바꿔보자. 미리 자주 사용하는 색깔 벡터를 만들어두고 쓰면 편할듯 싶다.
# 채우기 색
> fillPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# 라인 색
> linePalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
scale_fill_manual()을 사용해서 채우기 색깔을 바꿀 수 있다. 원하는 색깔을 백터로 지정한다.

라인색은 scale_colour_manual()을 통해 변경할 수 있다. 채우기와 동일하다.


scale_colour_grey() 등을 사용하면 미리 지정된 색깔을 간단하게 이용할 수도 있다. API 문서에서 scale_colour_로 시작하는 함수나 scale_fill_로 시작하는 함수를 테스트해보자.

+ 참고 : Cookbook for R - Colours (ggplot2)
일단 몇개 테스트 데이터를 만든다. 여기서 사용한 모든 샘플과 색깔은 Cookbook for R - Colours (ggplot2)에서 가져왔다. (시인성 좋은 색깔 샘플들이 많으니 이 사이트를 꼭 한번 확인해 보자.)
> df2 <- read.table(header=T, text='
+ cond1 cond2 yval
+ A I 2
+ A J 2.5
+ A K 1.6
+ B I 2.2
+ B J 2.4
+ B K 1.2
+ C I 1.7
+ C J 2.3
+ C K 1.9
+ ')
+ cond1 cond2 yval
+ A I 2
+ A J 2.5
+ A K 1.6
+ B I 2.2
+ B J 2.4
+ B K 1.2
+ C I 1.7
+ C J 2.3
+ C K 1.9
+ ')
막대 그래프를 그려보면 ggplot2에 default로 설정된 색깔로 이쁘게 그려준다.
> ggplot(df2, aes(x=cond1, y=yval)) +
geom_bar(aes(fill=cond2), # fill depends on cond2
position=position_dodge()) # Put bars side-by-side instead of stacked
geom_bar(aes(fill=cond2), # fill depends on cond2
position=position_dodge()) # Put bars side-by-side instead of stacked

처음에 그렸던 막대 그래프에 검은색으로 테두리를 쳤다. 이건 geom_bar()함수에 colour 전달인자로 색깔을 지정해 주는 방법이다. "black"처럼 미리 지정된 내용을 쓰거나, "#FF0000"처럼 RGB 코드값을 넣어주면 된다.
> ggplot(df2, aes(x=cond1, y=yval)) +
geom_bar(aes(fill=cond2), # fill depends on cond2
colour="black", # Black outline for all
position=position_dodge()) # Put bars side-by-side instead of stacked
geom_bar(aes(fill=cond2), # fill depends on cond2
colour="black", # Black outline for all
position=position_dodge()) # Put bars side-by-side instead of stacked

이제 본격적으로 색깔을 바꿔보자. 미리 자주 사용하는 색깔 벡터를 만들어두고 쓰면 편할듯 싶다.

> fillPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

> linePalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
scale_fill_manual()을 사용해서 채우기 색깔을 바꿀 수 있다. 원하는 색깔을 백터로 지정한다.
> ggplot(df2, aes(x=cond1, y=yval)) +
geom_bar(aes(fill=cond2), # fill depends on cond2
colour="black", # Black outline for all
position=position_dodge()) + # Put bars side-by-side instead of stacked
scale_fill_manual(values=fillPalette)
geom_bar(aes(fill=cond2), # fill depends on cond2
colour="black", # Black outline for all
position=position_dodge()) + # Put bars side-by-side instead of stacked
scale_fill_manual(values=fillPalette)

라인색은 scale_colour_manual()을 통해 변경할 수 있다. 채우기와 동일하다.
> ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
geom_line(aes(group=cond2)) +
geom_point(size=3)
> ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
geom_line(aes(group=cond2)) +
geom_point(size=3) +
scale_colour_manual(values=linePalette)
geom_line(aes(group=cond2)) +
geom_point(size=3)
> ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
geom_line(aes(group=cond2)) +
geom_point(size=3) +
scale_colour_manual(values=linePalette)


scale_colour_grey() 등을 사용하면 미리 지정된 색깔을 간단하게 이용할 수도 있다. API 문서에서 scale_colour_로 시작하는 함수나 scale_fill_로 시작하는 함수를 테스트해보자.
> ggplot(df2, aes(x=cond1, y=yval, colour=cond2)) +
geom_line(aes(group=cond2)) +
geom_point(size=3) +
scale_colour_grey()
geom_line(aes(group=cond2)) +
geom_point(size=3) +
scale_colour_grey()

+ 참고 : Cookbook for R - Colours (ggplot2)
덧글