R을 사용한 데이터 시각화 - 3. histogram과 barplot 그리기

이번 포스트에서는 Histogram 과 Boxplot 다루어 볼 것이다.

내장 데이터셋인 cane을 활용하여 먼저 Histogram을 그려보자.

Simple histogram

hist() 함수가 기본적으로 내장되어 있다.

1
2
3
4
5
library(boot)
head(cane)
ratio <- cane$r/cane$n # dataset_name$column_name
hist(ratio, breaks = 20, xlab = "Diseased Shoot Ratio",
col = 'aquamarine', main = "Histogram of Diseased Shoot Ratio")

코드에서 breaks 옵션은 블록의 크기를 얼마나 잘게 쪼갤지 조절한다.

왼쪽은 breaks = 20, 오른쪽은 breaks = 40 일때





ggplot으로 histogram 그리기

ggplot으로 histogram을 그릴 때는, geom_histogram() 함수를 사용한다.

1
2
3
4
5
library(ggplot2)
ggplot(cane, aes(x=r/n, fill=block)) +
geom_histogram(col="black", bins=20) + theme_bw() +
facet_grid(block ~ .) + xlab('Diseased Shoot Ratio') +
theme(legend.position = "none") # legend를 제거

fill 옵션으로 block 별로 다르게 색상을 표시하라고 지정했다.

히스토그램 내 bins 옵션은 위의 breaks와 동일한 효과이며, facet_grid() 를 활용하여 cane 내의 block 값 별로 분리하여 출력했다.

Simple boxplot

이번에는 Boxplot 을 그려 보자. 주로 그룹 간의 차이를 나타낼 때 사용하며, 꽤나 자주 등장하는 타입이므로 중요하다.

데이터는 내장 데이터셋인 ToothGrowth를 사용한다. 데이터를 먼저 살펴보자.

기본적으로 boxplot() 함수로 그릴 수 있다.

1
2
3
4
5
6
# simple boxplot
boxplot(len~supp, data=ToothGrowth, xlab='Supplement Type', ylab='Tooth Length')

# Boxplot of len against dose and supp factors
boxplot(len~supp*dose, data=ToothGrowth, notch=T,
xlab='Suppliment and Dose', ylab='Tooth length', col=c('cyan', 'magenta'))

왼쪽은 supp을 기준으로, 오른쪽은 suppdose를 조합하여 그린 boxplot





ggplot으로 boxplot 그리기

ggplot으로 boxplot을 그릴 때는, geom_boxplot() 함수를 사용한다.

1
2
3
4
library(ggplot2)
ggplot(ToothGrowth, aes(x=factor(dose), y=len)) +
geom_boxplot(aes(fill=supp)) +
xlab('Dose') + ylab('Tooth length') + ggtitle('Analyzing ToothGrowth Data')

x 값에 우리가 원하는 dose를 넣을 때, 자료형을 num 에서 factor로 바꿔주기 위해서 (category화) factor() 함수를 사용했다.

boxplot의 색상은 supp에 따라 바뀌도록 fill 옵션을 지정하였다.

확실히 ggplot으로 그린 그래프들이 전반적으로 깔끔하다. 기본적인 graph 그리기 포스트는 끝!

본 포스트는 KAIST 전산학부 대학원 과정에서 수강하고 있는 Big Data Analytics using R (CS564)을 실습하며 작성하였음을 밝힙니다.