본문 바로가기

R 시각화

[R 시각화] 원그래프(pie chart) 그리기

 

R을 활용한 원그래프(pie chart) 그리기

 

R을 활용한 데이터 시각화 초급 두 번째로 배워볼 그림은 원그래프(pie chart)입니다.

 

우리가 각 항목의 비중(%)을 표현하고 싶을 때 가장 많이 쓰고 유용하게 쓰는 그래프이기도 하죠.

 

기본과 핵심만 쏙쏙 알려드리겠습니다.

 

1. 데이터 준비하기

 

막대그래프를 그리기 위한 데이터는 공공데이터포털에 있는 인기 데이터 중 하나인 교통사망사고 데이터를 활용하겠습니다.

 

아래 링크를 통해서 다운 가능해요.

 

공공데이터포털 : 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Dataset)와 Open API로 제공하는 사이트입니다.
 
 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

실습 파일은 "2016년 교통 사망사고 데이터.csv" 입니다.
 

2. R 코드

 

 

먼저 데이터를 불러와서 traffic이라는 object에 저장합니다.

 

#1. 데이터 불러오기
setwd("C:/data")
traffic <- read.csv("2016년 교통 사망사고 데이터.csv")
 

 

그리고 데이터를 분석하고 그림을 그리기 전에 데이터의 생김새를 살펴봅니다. 데이터가 잘 불러와졌는지 확인하기도 하고요.

 

저는 보통 5개 함수를 써서 살펴봅니다.

 

#2. 데이터 생김새 파악하기
head(traffic) # 데이터 상위 6개 보기
tail(traffic) # 데이터 하위 6개 보기
nrow(traffic) # 데이터 row수 보기
summary(traffic) # 기본통계량 보기
str(traffic) # 변수 특성 확인 등 구조 확인
 

 

이제 원그래프를 그릴 차례입니다. 어떤 사고유형이 교통사망사고로 가장 많이 이어지는지 그려볼 거예요.

 

## 3. 원그래프(파이차트)
circle <- table(traffic$사고유형_대분류)
pie(circle)
 

 

위 코드를 R에서 실행하면 다음 원그래프(pie chart)를 그리실 수 있습니다.

 

기본 기준선은 3시 방향에 그어진 선이에요. 그래서 기준선을 기준으로 왼쪽부터 차례대로 입력이 됩니다.

 

 

 

 

 

원그래프(pie chart)에서 중요한 것만 몇가지 알고 넘어갈게요.

 

기준선을 변경할 수가 있어요. 기본 3시 방향의 기준선을 init.angle= 옵션을 활용하면 변경할 수 있습니다.

 

init.angle=90으로 설정을 하면 왼쪽으로 90도 이동해라 라는 뜻이에요. 그럼 기준선이 3시에서 12시로 바뀌겠죠?

 

그 밖에 원 크기를 조절하는 옵션은 radius=, 기준선을 기준으로 왼쪽이 아닌 시계방향 즉 오른쪽부터 값을 입력해라 라는 옵션은 clockwise=T 옵션을 활용하면 됩니다.

 

# 기준선 변경(init.angle)
pie(circle, init.angle=90)

# 원 크기 조절(radius)
pie(circle, radius=0.9) # 반경

# 방향 바꾸기(clockwise)
pie(circle, clockwise=T)
 

 

기준선 변경(12시로), 원 크기 조절, 방향 바꾸기

 

이제 원그래프(pie chart)에서 가장 중요한 값 입력에 대해서 알아볼게요. 원그래프에서는 보통 기본 건수를 넣기 보다는

 

그 비중 즉 % 값을 넣는게 일반적입니다. 그래서 우리도 기본 값이 아닌 %값을 넣어볼게요.

 

# 값 입력(labels)
label <- paste(names(circle), "\n", circle)
label
pie(circle, labels=label)

# 값(퍼센트) 입력
label <- paste(names(circle), "\n", circle/sum(circle)*100)
label
pie(circle, labels=label)

pct <- round(circle/sum(circle)*100,2)
label <- paste(names(circle), "\n", pct, "%")
pie(circle, labels=label)
 

퍼센트는 circle / sum(circle) * 100 을 하면 쉽게 구할 수 있죠??

 

그리고 그렇게 구한 퍼센트를 pct라는 object에 넣고 pie()를 그리면 됩니다.

 

여기서 paste()에서 "\n"을 한게 보이실 텐데, "\n"은 다음 줄에 값 입력을 의미합니다. 결과를 보시면 이해되실 거예요.

 

"\n"을 안쓰면 "차대사람 1647" 이라는 결과가 나올텐데, "\n"을 써서 차대사람 다음 줄에 값이 나오게끔 한거예요.

 

 
 
그냥 값 입력, % 입력, 보정 결과

 

2D 원그래프(pie chart) 말고 3D 원그래프(pie chart)도 그릴 수 있습니다. 다만 "plotrix"라는 library가 필요해요.

 

# 3D 파이차트(plotrix, pie3D)
install.packages("plotrix")
library(plotrix)
pie3D(circle, labels=label)

# 파이 간격 설정(explode)
pie3D(circle, labels=label, explode=0.1) 
pie3D

# 값 크기 조절(labelcex)
pie3D(circle, labels=label, labelcex=0.9)
 

 

기본 3D pie chart, 파이 간격 설정, 파이 값 크기 조절
 

 

색 지정하는 건 막대그래프에서 다룬 내용이랑 비슷해서 원그래프(pie chart)에서는 넘어갈게요.

 

이상 R에서 원그래프(pie chart) 그리기 포스팅이었습니다.