Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[R/ggplot2] 그래프 색깔 바꾸기 Computer & Program

ggplot2를 사용하다 보면 가끔 라인이나 채우기 색깔을 바꾸고 싶은 경우가 있다. 바꾸는 방법은 geom_bar()나 geom_line() 등에 전달인자로 fill, colour 등을 바꾸어줄 수도 있고, scale_fill_ 또는 scale_colour_ 등으로 시작하는 함수를 사용할 수도 있다.

일단 몇개 테스트 데이터를 만든다. 여기서 사용한 모든 샘플과 색깔은 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
+ ')


막대 그래프를 그려보면 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()함수에 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


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

# 채우기 색
> 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)


라인색은 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)




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()




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

덧글

댓글 입력 영역

Google AdSense (text/image)