함께하는 데이터 분석

[Python] Matplotlib 파이 차트 그리기 본문

데이터분석 공부/Python

[Python] Matplotlib 파이 차트 그리기

JEONGHEON 2022. 4. 9. 18:36

오늘은 파이 차트를 그려보겠습니다.

 

 

라이브러리 불러오기

import matplotlib.pyplot as plt

plt.rc('font', family = 'AppleGothic') # mac 
# plt.rc('font', family = 'Malgun Gothic') # window
plt.rc('font', size = 12)
plt.rc('axes', unicode_minus = False) # -표시 오류 잡아줌

 

 

데이터 생성 및 파이 차트 그리기

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9]

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science)
plt.show()

plt.pie를 이용하여 파이 차트를 그려주면 됩니다.

 

하지만 이렇게 그리면 구체적인 퍼센트를 알 수가 없죠.

 

파이 차트에 퍼센트를 넣어볼까요?

 

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9]

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science, autopct = '%.1f%%')
plt.show()

autopct인자에 %.1f%%를 이용하여

 

소수점 한자리까지 나타내면서

 

뒤에 %를 붙여줄 수 있습니다.

 

이번에는 정각에서부터 파이 차트가 시작하도록 만들어주겠습니다.

 

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9]

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90)
plt.show()

startangle을 90으로 맞춰주면 위와 같이

 

시계 정각에서부터 그래프가 시작하게 됩니다.

 

이번에는 물리부터 시계방향으로 바꿔줄까요?

 

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9]

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90, counterclock = False)
plt.show()

이렇게 countercolock = False를 해주면

 

물리, 화학, 생명, 지구 순으로 그려집니다.

 

이번에는 파이 차트 사이사이를 약간 띄워볼까요?

 

 

파이 차트 공간 만들기

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9]
explode = [0.03] * 4

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90, counterclock = False, explode = explode)
plt.show()

이렇게 일정하게 0.03만큼 explode를 이용하여

 

공간을 만들어줬습니다.

 

하지만 약간 울퉁불퉁하게 딱 맞아떨어지지 않는 것을 볼 수 있죠.

 

그 부분은 뒤에서 다른 방법으로 해결해볼게요.

 

 

그림자 설정

plt.figure(figsize = (10, 5))
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, explode = explode, shadow = True)
plt.show()

shadow = True를 이용하여 그림자를 설정해줬습니다.

 

다음은 늘 하던대로 범례와 타이틀을 달아줘 보겠습니다.

 

 

타이틀과 범례 달기

plt.figure(figsize = (10, 5))
plt.title('2022학년도 과학탐구 응시자 수')
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, explode = explode, shadow = True)
plt.legend(loc = (1, 0.6), title = '과학탐구')
plt.show()

너무 많이 해봤어서 다들 잘 아실 거라 생각합니다.

 

 

색깔 설정하기

colors = ['aqua', 'pink', 'yellow', 'lightgreen']

plt.figure(figsize = (10, 5))
plt.title('2022학년도 과학탐구 응시자 수')
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, explode = explode, colors = colors)
plt.legend(loc = (1, 0.6), title = '과학탐구')
plt.show()

색깔도 마찬가지로 colors인자를 통해

 

리스트를 만들어서

 

각각의 색깔을 설정해줄 수 있습니다.

 

 

도넛 형태의 파이 차트 그리기

colors = ['aqua', 'pink', 'yellow', 'lightgreen']
wedgeprops = {'width' : 0.75}

plt.figure(figsize = (10, 5))
plt.title('2022학년도 과학탐구 응시자 수')
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, explode = explode,\
        colors = colors, wedgeprops = wedgeprops)
plt.legend(loc = (1, 0.6), title = '과학탐구')
plt.show()

wedgeprops를 이용하여 width를 0.75로 설정하여

 

도넛 모양처럼 가운데에 구멍이 뚫린 것을 알 수 있습니다.

 

근데 자세히 보시면 아까 말씀드린 것처럼

 

간격이 삐뚤삐뚤해 보이죠.

 

explode 말고 다른 방법으로 반듯하게 바꿔주겠습니다.

 

 

파이 차트 반듯하게 그리기

colors = ['aqua', 'pink', 'yellow', 'lightgreen']
wedgeprops = {'width' : 0.75, 'edgecolor' : 'w', 'linewidth' : 3}

plt.figure(figsize = (10, 5))
plt.title('2022학년도 과학탐구 응시자 수')
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, colors = colors, wedgeprops = wedgeprops)
plt.legend(loc = (1, 0.6), title = '과학탐구')
plt.show()

explode를 빼고 wedgeprops에

 

edgecolor를 흰색으로 설정하고

 

linewidth를 설정하여 반듯하게 만들어주었습니다.

 

이제 마지막으로 안의 비율이 적힌 글자를 이동시켜주겠습니다.

 

 

퍼센트 글자 이동

plt.figure(figsize = (10, 5))
plt.title('2022학년도 과학탐구 응시자 수')
plt.pie(people, labels = science, autopct = '%.1f%%', startangle = 90,\
        counterclock = False, colors = colors, wedgeprops = wedgeprops,\
        pctdistance = 0.8)
plt.legend(loc = (1, 0.6), title = '과학탐구')
plt.show()

plt.pie에서 pctdistance인자를 사용하여

 

중심으로부터 0.8만큼 떨어지게 만들어줬습니다.

 

여기까지 파이 차트 그리는 법을 알아봤습니다.

 

다음에는 boxplot 그리는 법을 알아보겠습니다!