서평: GGPLOT2, Elegant Graphics for Data Analysis (Use R!)

Tags:

GGPLOT2는 R을 위한 문법 기반의 그래픽 시스템입니다. 기본적으로 포함된 R의 plotting function 들이 보통 하나의 함수안에서 모든 기능을 다 넣기때문에 plot을 여러가지로 변형하거나 재사용하거나 확장하기가 어려웠던 반면, gpplot2는 graphics자체를 다시 생각하고 차트의 요소를 geom, statistics, scales, coordinate system, faceting, position, aesthetics등으로 분리했습니다. 그리고 각 차트는 이러한 요소들의 조합으로 그려지게 됩니다. 그렇기 때문에 각 요소를 손쉽게 조합해서 더 복잡한 차트를 만들거나 더 잘 customize할 수 있게 되었습니다.

제가 아는한은 ggplot2에 대한 책은 GGPLOT2, Elegant Graphics for Data Analysis (Use R!)가 거의 유일하기때문에 ggplot2를 배우겠다고 생각한다면 아마 이책외에는 답이 없을 것 같습니다. 하지만 다행스럽게도 책은 읽기쉽고 예제가 충분합니다. 코드와 차트가 번갈아 가면서 나오는형태라서 볼만하고, 가끔 문법적인 설명이 부족한 경우가 있기는 하지만, 그래도 다른 R책에 비해서는 상당히 양호합니다.

단점이라면 차트 그리기만 계속 설명하는 한권의 책을 읽는다는게 좀 지겹다는 정도겠네요.

마지막으로 ggplot2로 그린 몇개 차트를 예시로 올려봅니다. 먼저 airquality데이터에서 월별 오존양에 대한 density 차트입니다.

> library(datasets)
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> airquality$MonthF <- factor(airquality$Month)
# x축은 Ozone값, y축은 각 Ozone값에대한 density입니다. 월별로 분리해서 density를 그렸습니다.
> qplot(Ozone, data=airquality, geom="density", fill=MonthF, alpha=I(0.2))

linear model도 쉽게 그려볼 수 있습니다.

# Straight line
> qplot(Wind, Ozone, data=airquality,  geom=c("point", "smooth"), method="lm")
# y = b + ax + ax^2
> qplot(Wind, Ozone, data=airquality,  geom=c("point", "smooth"), method="lm", formula=y ~ poly(x, 2))