이번 장에서 그리는 plot은 Winston Chang의 “R Gaphics Cookbook”에서 인용하였음을 밝힌다.
이번 장에서 그릴 그래프는 palette를 적용한 area plot이다.
예제 갤러리에서 area plot with palette를 선택해보자. 그림이 나타나면 변수/옵션초기화 버튼(화살표)를 눌러 그림 대신 표가 나타나게 한다.
x축 변수에 Year를 할당하고(1) y축 변수에 Thousands를 할당한다(2). fill변수에 AgeGroup을 할당한다(3).
geometry options 중에서 point 체크박스를 클릭한다(1). 그러면 화면과 같은 그래프가 나타나는데 point의 shape을 21로 바꿔준다(2).
point의 모양이 21(속이 채워진 동그라미)로 바뀌어 연령대별로 구분은 가지만 위치가 모두 겹쳐있다. 우리가 그리고자 하는 그래프는 연령별로 구분된 그래프가 아닌 연령대별로 합쳐서 전체 인구의 변동을 그래프를 보고자 하므로 위치(position)를 stack으로 바꾼다.
point이 stack으로 바뀌면서 우리가 의도한 대로 연도변화에 따른 전체 인구 구성비 및 전체인구의 변동을 한눈에 알 수 있게 되었다. 하지만 우리가 그리고자 하는 것은 점그래프가 아닌 area plot이다.
점그래프가 아닌 area plot을 그리기 위해 point 체크박스를 해제하고(1) area 체크박스를 선택한다(2). 화면과 같은 그래프가 나타나는데 배색이 조금 마음에 들지 않는다.
화면 오른쪽에 있는 Palette바꾸기에서 Blues를 선택한다.
각 영역을 구분하기 위한 line을 추가하고 싶다. 먼저 line 체크박스를 체크하면(1) 화살표처럼 여러개의 line이 엉켜서 나오게 된다(2). 점그래프에서와 마찬가지로 line의 position을 stack으로 바꾸어 준다(3).
선이 너무 굵으므로 선의 size을 0.4로 하고 영역의 투명도(alpha)를 0.4로 한다. 또한 그래프에서의 영역의 순서와 범례의 순서가 서로 반대이므로 화면 오른쪽의 범례순서 반대로를 체크한다. 이것으로 그림이 완성된다.
이 그림을 그린 R 명령어는 다음과 같다. 명령어를 익히는 것이 더 간단할 수도 있지만 중간과정을 볼 수 없으므로 우리가 원하는 그래프를 얻기 위하여 여러 번 시행착오를 겪을 수도 있다. 반면에 웹R을 이용하여 그래프를 그리는 경우 옵션을 바꿀 때마다 그때그때 그래프의 변화를 눈으로 볼 수 있다는 장점이 있다.
require(ggplot2)
require(gcookbook) # uspopage데이타의 사용을 위해
ggplot(uspopage,aes(x=Year,y=Thousands,fill=AgeGroup))+
geom_area(size=0.2,alpha=0.4) +
geom_line(position='stack',size=0.2)+
scale_fill_brewer(palette="Blues")+
guides(fill=guide_legend(reverse=TRUE))