기본 그래프

ddoddo·2023년 1월 4일
0

데이터분석 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개의 댓글