기본 그래프

ddoddo·2023년 1월 4일

데이터분석 with R

목록 보기
5/21

막대 그래프

가장 기본 그래프인 막대 그래프로 부화장별 병아리 부화 마릿수를 나타내보자. 막대 그래프를 그리기 위해서는 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='부화장별 병아리 부화 비율')

0개의 댓글