이번 글에서는 R의 데이터 시각화 패키지인 `ggplot`에 대해 알아보겠습니다. 저번 글에서는 R의 내장 함수인 `plot` 함수에 대해 다뤘는데요.
따라서 저번 글에서 다룬 plot의 주요 파라미터들에 대해 알고 있다고 가정하고 설명하겠습니다. 잘 모르시는 경우 먼저 해당 글을 참고해주세요!
ggplot 에 대하여..
`ggplot2`는 R에서 사용되는 강력하고 유연한 그래픽 패키지입니다.
ggplot의 주요 객체
ggplot2로 생성된 그림은 R의 객체로 구성되는데요. ggplot의 주요 객체를 살펴보면 다음과 같습니다.
- `ggplot 객체`: 그래픽을 생성하는 기본 객체입니다.
- 하위 객체
- `aes 객체`: 미적 매핑을 정의하기 위한 객체입니다.
- `geom 객체`: 기하학적 객체를 추가하여 그래프의 형태를 정의합니다.
- `theme 객체` : 그래프의 배경색, 폰트, 선의 종류 등 그래프의 외관이나 레이아웃을 조절하기 위한 객체입니다.
- `labs 객체`: 그래프의 제목이나 축 레이블을 조절하기 위한 객체입니다.
- `coord 객체`: 좌표 시스템을 정의하기 위한 객체입니다.
ggplot 설치 및 불러오기
# 설치
install.packages("ggplot2")
# 불러오기
library(ggplot2)
qplot
`qplot`은 "Quick Plot"의 줄임말로, ggplot2 패키지에서 제공하는 간단한 그래프 생성 함수 중 하나입니다. 바로 qplot 함수를 통해 plot을 그려보겠습니다.
library(ggplot2)
library(gridExtra)
x <- c(0.5, 1.2, 2.6, 3.2)
y <- c(1.1, 1.6, 3.3, -1.1)
plot1 <- qplot(x, y, main = "title", xlab="x axis", ylab="y axis")
plot2 <- qplot(x, y, main = "geom = \"blank\"", xlab="x axis", ylab="y axis", geom="blank")
grid.arrange(plot1, plot2, ncol = 2) # par(mfrow=c(1,2)) 동일한 기능
- `main`, `xlab`, `ylab` : plot() 함수의 인자와 동일합니다.
- `geom` : plot의 타입을 정하는 파라미터로, plot()의 type 역할을 대체합니다. geom에 대해서는 아래에서 자세히 다루겠습니다.
- `gridExtra`: 여러 개의 그래프를 배열로 표시하거나 조작하는 데 사용하는 패키지입니다.
- `grid.arrange`: 여러 개의 grid 그래픽 객체를 하나의 그림으로 배열합니다.
geom
`geom_point` 함수는 산점도를 추가하고, `geom_line` 함수는 선을 추가합니다.
위에서 생성한 plot2 객체에 산점도와 선을 추가해보겠습니다.
qplot(x, y, main = "title", xlab="x axis", ylab="y axis", geom="blank") +
geom_point(size=2, shape=6, color='blue') +
geom_line(color='red', linetype=2)
`geom_point` 의 주요 파라미터
- size: 점의 크기를 설정합니다.
- color: 점의 색상을 설정합니다.
- shape: 점의 모양을 설정합니다. 여러 가지 숫자나 문자열로 표현될 수 있습니다.
- fill: 점의 내부를 채우는 색상을 설정합니다.
- alpha: 점의 투명도를 설정합니다.
- stroke: 점의 테두리 색상을 설정합니다.
`geom_line` 의 주요 파라미터
- size: 선의 굵기를 설정합니다.
- color: 선의 색상을 설정합니다.
- linetype (lty): 선의 종류를 설정합니다. 예를 들어, 실선("solid"), 점선("dashed") 등이 있습니다.
- alpha: 선의 투명도를 설정합니다.
- group: 그룹을 지정하여 여러 개의 선을 그릴 때 사용합니다.
- inherit.aes: 상위 미적 매핑을 사용할지 여부를 설정합니다.
qplot(x, y, main = "title", xlab="x axis", ylab="y axis", geom="blank") +
geom_hline(yintercept = c(0,2), lty=3) +
geom_vline(xintercept = c(1,2)) +
geom_segment(mapping=aes(x=1,y=1,xend=5,yend=1),color="orange")
`geom_hline`, `geom_vline`은 각각 가로선과 세로선을 그립니다. (참고로 `geom_abline`으로 대체가능)
- xintercept: 가로선의 y축 위치를 지정합니다. (geom_hline)
- yintercept: 세로선의 x축 위치를 지정합니다. (geom_vline)
`geom_segment`는 두 점을 연결하는 선(segment)을 추가합니다.
- x, y: 시작점의 x, y 좌표를 지정합니다.
- xend, yend: 끝점의 x, y 좌표를 지정합니다.
aes
`aes`는 "Aesthetic Mapping(미적 매핑)"의 약자로, 데이터의 변수에 그래프의 시각 속성값을 매핑할 때 사용됩니다.
바로 예제를 통해 알아보겠습니다.
x <- 1:10
y <- c(-1,2,5,-2,-3,0,6.2,1.5,-3.4,-8.1)
# 카테고리 나누기
ptype <- rep(NA,length(x=x))
ptype[y>0] <- "over_0"
ptype[y<0] <- "less_0"
ptype[y==0] <- "0"
ptype <- factor(x=ptype)
ptype
# plot
qplot(x,y, color=ptype, shape=ptype) +
geom_line(mapping=aes(group=ptype))
- `ptype` : y 데이터의 카테고리(factor) 변수
- ptype의 level에 따라 color, shape, line을 매핑하였습니다.