R을 활용한 원그래프(pie chart) 그리기
R을 활용한 데이터 시각화 초급 두 번째로 배워볼 그림은 원그래프(pie chart)입니다.
우리가 각 항목의 비중(%)을 표현하고 싶을 때 가장 많이 쓰고 유용하게 쓰는 그래프이기도 하죠.
기본과 핵심만 쏙쏙 알려드리겠습니다.
1. 데이터 준비하기
막대그래프를 그리기 위한 데이터는 공공데이터포털에 있는 인기 데이터 중 하나인 교통사망사고 데이터를 활용하겠습니다.
아래 링크를 통해서 다운 가능해요.
공공데이터 포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase
www.data.go.kr
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)



이제 원그래프(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)



색 지정하는 건 막대그래프에서 다룬 내용이랑 비슷해서 원그래프(pie chart)에서는 넘어갈게요.
이상 R에서 원그래프(pie chart) 그리기 포스팅이었습니다.
'R 시각화' 카테고리의 다른 글
[R 시각화] ggmap, get_naver 를 활용한 대한민국 지도 그리기 (0) | 2022.03.15 |
---|---|
[R 시각화] reorder 함수(function) 활용해서 ggplot2 그래프 정렬하기 (0) | 2022.03.15 |
[R 시각화] 히스토그램(histogram) 그리기 (0) | 2022.03.15 |
[R 시각화] 막대그래프(barplot) 그리기 (2) (0) | 2022.03.15 |
[R 시각화] 막대그래프(barplot) 그리기 (1) (0) | 2022.03.15 |