파이썬/시각화 matplot
데이터의 비율을 표현하는 파이차트 pie
Merware
2023. 5. 16. 15:20
[학습목표]
파이차트를 이용하여 데이터의 상대적 비율을 표현할 수 있다.
import matplotlib.pyplot as plt
# 그래프에 한글 설정
plt.rcParams['font.family'] = 'Malgun Gothic'
# 그래프에 마이너스 기호 깨지는 문제 해결
plt.rcParams['axes.unicode_minus'] = False
파이차트
- 전체에 대한 각 부분의 비율을 부채꼴 모양으로 나타낸 그래프이다.
- 각 부채꼴의 중심각이 전체에서 해당 데이터가 차지하는 비율을 나타낸다.
- 1차원 리스트/배열/시리즈를 이용하여 그린다.
샘플데이터
# 2019년 병역판정검사 - 혈액형 분포
blood_type = ['A','B','O','AB']
Personnel = [111901,87066,86804,36495]
기본 파이그래프 그리기
- plt.pie(data)
plt.pie(Personnel)
plt.show()
레이블 달기
- labels=label목록
- labeldistance = 그래프로부터 레이블을 얼만큼 떨어뜨려서 표시할것인가 (default:1.1)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2)
plt.show()
비율 표시하기
- autopct = '%소수점자리수%%'
- pctdistance = 중심에서의 거리(반지름을 1이라고 했을 때 반지름으로부터 얼만큼 떨어져서 비율을 표시할 것인지.., default:0.6)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6)
plt.show()
돌출효과
- explode=돌출정도리스트
- 반지름의 길이를 1이라고 했을 때를 기준으로 하여 돌출 정도를 지정
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0])
plt.show()
색상 바꾸기
- colors = 색상리스트
['lightcoral', 'gold', 'greenyellow', 'skyblue']
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue'])
plt.show()
시작각도
- startangle = 시작각도
- 기본시작각도는 3시방향
- 시작각도를 지정하면 3시방향으로부터 반 시계방향으로 각도만큼 이동하여 시작
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90)
plt.show()
회전방향
- counterclock=True/False (반시계/시계)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False)
plt.show()
범례
- legend(레이블리스트)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False)
plt.legend(loc=(1,0.5))
plt.show()
반지름
- radius=반지름(Default:1)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False
, radius=1)
plt.show()
부채꼴 스타일
- wedgeprops = {'ec':테두리컬러, 'lw':선두께, 'ls':선스타일, 'width':반지름에대한비율}
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False
, radius=1
, wedgeprops = {'ec':'k', 'lw':1,'ls':':' ,'width':0.7})
plt.show()
폰트
- textprops = {'fontsize':폰트사이즈, 'color':폰트컬러, 'rotation':폰트회전각도}
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False
, radius=1
, wedgeprops = {'ec':'k', 'lw':1,'ls':':' ,'width':0.7}
, textprops = {'fontsize':12, 'color':'b', 'rotation':0})
plt.show()
그래프 완성
plt.figure(figsize=(5,5), facecolor='ivory', edgecolor='gray', linewidth=2)
plt.pie(Personnel, labels=blood_type, labeldistance = 1.2, autopct ='%.1f%%', pctdistance=0.6
, explode=[0.1,0,0,0]
, colors =['lightcoral', 'gold', 'greenyellow', 'skyblue']
, startangle=90
, counterclock = False
, radius=1
, wedgeprops = {'ec':'k', 'lw':1,'ls':':' ,'width':0.7}
, textprops = {'fontsize':12, 'color':'b', 'rotation':0})
plt.title('2019년 병역판정검사 - 혈액형 분포', size=15)
plt.show()