가장 기본 그래프인 막대 그래프로 부화장별 병아리 부화 마릿수를 나타내보자. 막대 그래프를 그리기 위해서는 barplot()
함수를 사용한다.
barplot(hat$chick)
위 그래프를 보면 색상도 단일 색상이고, 항목 이름도 없고, 항목별 값도 표시되지 않았다. 옵션을 지정하여 그래프를 바꿔보자.
names.arg
: 가로축의 항목 이름col
: 막대 색상 지정, 항목이 여러개일 경우 c()
함수 이용main
: 그래프 제목xlab
: x축 이름ylab
: y축 이름ylim
: y축 (하한값, 상한값)> barplot(hat$chick, names.arg=hat$hatchery,
+ col=c('red', 'orange', 'yellow', 'green', 'blue', 'navy', 'violet'),
+ main='부화장별 병아리 부화 현황', xlab='부화장', ylab='병아리 수',
+ ylim=c(0, 35))
RColorBrewer
라는 패키지를 통해 각종 그래프에 색상을 입힐 수 있게 미리 다양한 팔레트를 만들어 놓은 패지키이다.
> install.packages('RColorBrewer')
> library('RColorBrewer')
아래 명령어를 통해 전체 팔레트 현황을 확인할 수 있다.
display.brewer.all()
Pastel2 팔레트에서 7개의 색상을 col7 변수에 집어 넣는다.
> col7 <- brewer.pal(7, 'Pastel2')
> barplot(hat$chick, names.arg=hat$hatchery,
+ col=col7,
+ main='부화장별 병아리 부화 현황', xlab='부화장', ylab='병아리 수',
+ ylim=c(0, 35))
barplot()
함수의 옵션에는 해당 기능이 없기 때문에 R에서 그래프 위에 텍스트나 선을 표시하기 위해서는 text()
와 ablin()
함수를 사용해야 한다.
text()
함수는 그래프의 특정 좌표에 텍스트를 보여주는 함수이다. 각 막대의 x좌표와 y좌표 그리고 표시해줄 데이터 값이 필요하다.
현재 데이터에서 y좌표는 hat$chick 이며 표시해줄 값 또한 y값과 동일하다. 하지만 x좌표는 A, B, C ... 와 같은 부화장 이름으로 표시되어 있으므로 x좌표를 알 수 없다. 따라서 x좌표를 구하는 방법을 알아보자.
barplot() 함수는 막대 그래프를 그려주지만 이를 변수에 담으면 각 막대의 x좌표 값이 입력된다. 즉, 첫 번째 막대는 0.1, 7번째 막대는 7.9가 좌표값이다.
> bar_x <- barplot(hat$chick)
> bar_x
[,1]
[1,] 0.7
[2,] 1.9
[3,] 3.1
[4,] 4.3
[5,] 5.5
[6,] 6.7
[7,] 7.9
pos 옵션
1 : 아래
2 : 왼쪽
3 : 위
4 : 오른쪽
# 막대 그래프
> barplot(hat$chick, names.arg=hat$hatchery,
col=col7,
main='부화장별 병아리 부화 현황', xlab='부화장', ylab='병아리 수',
ylim=c(0, 35))
# 그래프에 텍스트 추가
> text(x=bar_x, y=hat$chick, labels=hat$chick, pos=3)
부화장별 최대 30마리의 병아리가 부화할 수 있으므로 30에 빨간색 점선을 그어보자.
lty
: 선의 모양lwd
: 선의 굵기> abline(h=30, col='red', lty=2, lwd=1)
파이 차트는 주로 항목별 비율을 나타낼 때 사용한다.
비율을 계산하고 소수점 한 자리로 반올림 하여 pct라는 변수를 추가한다.
> hat$pct <- round(hat$chick / sum(hat$chick) * 100, 1)
> hat
hatchery chick pct
1 A 30 15.5
2 B 30 15.5
3 C 29 14.9
4 D 26 13.4
5 E 24 12.4
6 F 28 14.4
7 G 27 13.9
항목 이름, 비율, 단위 총 3가지를 한 번에 보여주기 위해 paste()
함수를 사용했다. 텍스트로 여러 항목을 보여주고자 할 때 사용하는 함수이다.
clockwise=TRUE
옵션의 경우 시계 방향으로 항목을 정렬해서 보여주는 옵션이다.
> pie(hat$chick, labels=paste(hat$hatchery, hat$pct, '%'),
+ col=col7, clockwise=TRUE,
+ main='부화장별 병아리 부화 비율')