ggplot2 패키지는 Lenland Wilkinson의 책 The Grammar of Graphics(이하 GG)에 기반한 R 그래픽스 패키지다. ggplot2의 가장 큰 장점은 세련된 그래프를 손쉽게 그릴 수 있다는 것이다. 다음은 iris 데이터를 ggplot2의 qplot 함수로 그린 산점도이다.

> qplot(Sepal.Width, Sepal.Length, data=iris, colour=Species)
R의 기본 함수인 plot으로 그린 결과와 비교해보면 훨씬 예쁘다.

> plot(Sepal.Length~Sepal.Width, data=iris, colour=Species)
보통 통계 패키지들은 미리 정해진 그래프 형식들이 있고 사용자가 이중에 한 가지를 고르는 방식으로 사용한다. 이와 달리 R은 저수준과 고수준 그래픽스 함수들이 모두 제공하기 때문에 사용자가 원하는 형태의 그래프를 만들어낼 수 있다. 하지만 자신이 원하는 그래프를 직접 만들기란 쉬운 일이 아니다.
GG의 관점에서 통계 그래픽스는 자료와 도형의 속성을 짝지은 것이다. 예를 들어 막대 그래프는 자료와 막대의 길이를 짝지은 것이다. 이것이 GG에서 말하는 '문법(grammar)'의 의미다. 따라서 사용자는 자료와 도형을 어떻게 짝 지을지만 결정해주면 다양한 형식의 그래프들을 원하는 대로 만들어낼 수가 있다.
예를 들어 위의 그래프들을 수직선과 수평선으로 이뤄진 '데카르트 좌표계(cartesian coordination system)' 위에 그리고 있다. 이것을 '극 좌표계(polar coordination system)'에 그리고 싶다면 어떻게 할까? ggplot2에서는 그냥 위의 그래프와 극 좌표계를 더하기만 하면 된다.
> qplot(Sepal.Width, Sepal.Length, data=iris, colour=Species) + coord_polar()
ggplot2에서 그래프를 만드는 방법은 두 가지가 있다. 위에서처럼 qplot 함수로 기본 그래프를 그린 다음에 구성 요소를 원하는 것으로 바꿔치기하는 방법도 있고, 아예 기본 구성 요소들만 가지고 짜맞추는 방법도 있다. 후자의 방법으로 맨 위의 그래프를 다시 그리면 다음과 같다.
ggplot()+ layer( data=iris, mapping=aes(x=Sepal.Width, y=Sepal.Length, color=Species), geom="point", stat="identity" ) + scale_y_continuous()+ scale_x_continuous()+ coord_cartesian()
위의 코드에서 알 수 있듯이 그래프의 기본 구성 요소는 레이어(layer), 척도(scale), 좌표계(coord:coordination system)이다. 이 중에 레이어는 다시 자료(data)와 기하학적 대상(geom:geometrical object) 그리고 이들을 연결하는 대응(mapping)과 통계(stat)로 이뤄져있다. ggplot2를 쉽게 쓰고 익히는 방법은 그래프가 이런 식으로 구성되어 있다는 것만 일단 알아두고 실제로는 qplot으로 작업을 하되 필요한 부분이 있으면 qplot으로 만든 그래프에서 필요한 구성요소만 바꿔치는 것이다.