카테고리 없음

14. 원 그래프 (심화)

_션샤인 2024. 7. 2. 17:01
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic'
matplotlib.rcParams['font.size'] = 15
matplotlib.rcParams['axes.unicode_minus'] = False
values = [30, 25, 20, 13, 10, 2] #원그래프 그릴 때 values 와 labels 필요함.
labels = ['Python', 'Java', 'Javascript', 'C#', 'C/C++', 'ETC']

plt.pie(values, labels=labels, autopct='%.1f%%', startangle = 90, counterclock = False) 
plt.show()

 

원형그래프를 그리는데 value, label을 입력, pct는 소숫점 첫번째 자리까지 입력하고, 파이차트를 시작하는 각도(startangle), 시계방향(False)

values = [30, 25, 20, 13, 10, 2] #원그래프 그릴 때 values 와 labels 필요함.
labels = ['Python', 'Java', 'Javascript', 'C#', 'C/C++', 'ETC']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']
explode = [0.05]*6

plt.pie(values, labels=labels, autopct='%.1f%%', startangle = 90, counterclock = False, colors = colors, explode = explode) 
plt.show()

컬러 지정하고, 간격은 0.5 동일하게 *6 개

wedgeprops={'width':0.6} #도넛의 두께 결정
plt.pie(values, labels=labels, autopct='%.1f%%', startangle = 90, counterclock = False, colors = colors, wedgeprops=wedgeprops)
plt.show()

wedgeprops={'width'=}로 도넛 두께 결정함, 지정 후 plt.pie 에도 넣어줘야함.

def custom_autopct(pct):
    #return('%.1f%%' % pct) if pct >=10 else ''
    #return'{:.1f}%'.format(pct) if pct >=10 else ''

plt.pie(values, labels=labels, autopct=custom_autopct, startangle = 90, counterclock = False, colors = colors, wedgeprops=wedgeprops)
plt.show()

def custom_autopct(pct) 함수 지정해서 10 이상이면 반환, 이하면 반환X

 

def custom_autopct(pct):
    #return('%.1f%%' % pct) if pct >=10 else ''
    return'{:.0f}%'.format(pct) if pct >=10 else ''

plt.pie(values, labels=labels, autopct=custom_autopct, startangle = 90, counterclock = False, colors = colors, wedgeprops=wedgeprops, pctdistance=0.7)
plt.show()

pctdistance = 백분율 레이블 위치를 원의 중심에서 떨어지도록 함(기본 0.6)

 

DataFrame 활용

 

import pandas as pd
df = pd.read_excel('../pandas/score.xlsx')
df

grp = df.groupby('학교')
grp
grp.size()['북산고']
values = [grp.size()['북산고'], grp.size()['능남고']]
labels = ['북산고', '능남고']

plt.pie(values, labels = labels)
plt.title('소속 학교')
plt.show()