본문 바로가기

R 시각화

[R 시각화] 막대그래프(barplot) 그리기 (2)

R을 활용한 막대그래프(barplot) 그리기 두번째 시간!

 

데이터를 불러와서 저장하는 코드는 지난번에 올린 막대그래프(1) 포스트를 참고해주세요.

https://nepori0447.tistory.com/6

[R 시각화 초급] 막대그래프 그리기(barplot) (1)
 

 

2. R 코드

 

막대그래프를 그리고 y축의 범위를 ylim() 함수를 통해 지정해보겠습니다.

 

y축의 범위가 0~700에서 0~800으로 변경된 것을 확인할 수 있습니다.

 

#6. y축 범위 설정(ylim)
barplot(bar, ylim=c(0,800))
 
ylim() 함수를 활용해서 y축 범위 설정

 

아래 코드는 막대 위, 아래, 오른쪽, 아래쪽에 텍스트(text)를 넣는 코드입니다. 막대의 값을 넣는 거죠.

 

먼저 barplot()의 결과를 bar.text라는 object에 넣어주고, 막대그래프 위에 text() 함수를 써서 값을 입력하는 방법입니다.

text(x축 위치, y축 위치, labels=넣을 값, pos=text 위치)

 

#7. 값 입력(text, pos)
bar.text <- barplot(bar)
text(bar.text, bar+20, labels=bar)

par(mfrow=c(2,2))
bar.text <- barplot(bar)
text(bar.text, bar+20, labels=bar, pos=1)

bar.text <- barplot(bar)
text(bar.text, bar+20, labels=bar, pos=2)

bar.text <- barplot(bar)
text(bar.text, bar+20, labels=bar, pos=3)

bar.text <- barplot(bar)
text(bar.text, bar+20, labels=bar, pos=4)
 

 

pos= 옵션에 숫자 1~4를 넣어서 text가 어디에 위치되는지 확인하시길 바랍니다.

 

왼쪽 위에가 pos=1, 오른쪽 위가 pos=2, 아래 왼쪽 pos=3, 아래 오른쪽 pos=4 입니다.

 

 

막대그래프를 세로가 아닌 가로로 그려보겠습니다. horiz=T 옵션을 활용할 거예요.

 

horizon은 수평선이라는 뜻이죠. 그래서 horiz=T 옵션을 쓰면 막대가 세로에서 가로(수평선)로 바뀝니다.

 

#8. 가로 막대그래프(horiz)
barplot(bar, horiz=T)
 
 

 

 

기본 막대그래프가 아닌 그룹형 막대그래프를 그리는 코드입니다.

 

일단 그룹형 막대그래프는 2차원 테이블을 만들어 놓고 그 테이블을 그리면 그룹형 막대그래프를 그릴 수 있게 됩니다.

beside=T 옵션도 활용해서 색다른 그래프를 그려볼게요.

 

#8. 그룹형 막대그래프(2차원 table, beside)
bar2 <- table(traffic$주야, traffic$발생지시도)
bar2
barplot(bar2, legend=rownames(bar2))
barplot(bar2, legend=rownames(bar2), beside=T)
 

2차원 테이블을 그리면 아래 결과물을 확인할 수 있고요. 주간, 야간에 발생한 지역별 교통사망 사고건수 테이블을 만들었습니다.

 

 

왼쪽 그래프는 beside= 옵션을 사용하지 않은 그래프이고 오른쪽 그래프는 beside=T 옵션을 사용한 그래프입니다.

 

주간에 교통사망 사고가 많이 일어난 지역은 어느 지역이고 야간에 교통사망 사고가 많이 일어난 지역은 어디인지 확인하기 위해 그려본 그래프인데요, beside=T 옵션을 활용해서 보는 것이 조금 더 보기 좋은 것 같아요.

 

beside=T 옵션 사용(왼쪽)

 

 

R에서 그룹형 막대그래프는 어떻게 정렬시킬까 고민을 하다가 다음 코드를 통해서 정렬을 시켜보았습니다.

 

총합계가 가장 큰 막대를 앞에 두는 코드입니다. 먼저 열의 합을 구해서 그 열의 이름을 저장을 하고요.

그 열의 이름 순서로 table을 뽑아내면 그것이 바로 그룹형 막대그래프 정렬하는 방법이 되겠습니다.

 

#9. 그룹형 막대그래프 정렬
sort1 <- sort(colSums(bar2), decreasing=T)
names(sort1)
bar3 <- table(traffic$주야, traffic$발생지시도)[,names(sort1)]
bar3
barplot(bar3, legend=rownames(bar3))
 

 

 

마지막으로 막대그래프의 범례 위치를 그래프 위에 찍어보겠습니다.

 

args.legend=list() 옵션을 활용할 겁니다. 위치는 top, bottom, topright, topleft, bottomright, bottomleft 가 있습니다.

 

#10. 범례 위치(args.legend : top, bottom)
barplot(bar2, legend=rownames(bar2), beside=T,
        args.legend=list(x='top'))
 

 

막대그래프는 데이터 시각화에서 가장 기본적인 그래프라서 다루는 내용이 많았습니다.

 

차근차근 하나씩 공부해보아요!