1 분 소요

14. 원 그래프(심화)

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]
labels = ['Python', 'Java', 'Javascript', 'C#', 'C/C++', 'ETC']
# colors = ['b', 'g', 'r', 'c', 'm' ,'y']
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()

wedgeprops={'width':0.6} # dict type
plt.pie(values, labels=labels, autopct='%.1f%%', startangle=90, counterclock=False, colors=colors, explode=explode, wedgeprops = wedgeprops)
plt.show()

wedgeprops={'width':0.6, 'edgecolor':'w', 'lw':5} # dict type
plt.pie(values, labels=labels, autopct='%.1f%%', startangle=90, counterclock=False, colors=colors, wedgeprops = wedgeprops)
plt.show()

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()

DataFrame 활용

import pandas as pd

df = pd.read_excel('../Pandas/score.xlsx')
df
지원번호 이름 학교 국어 영어 수학 과학 사회 SW특기
0 1번 채치수 북산고 197 90 85 100 95 85 Python
1 2번 정대만 북산고 184 40 35 50 55 25 Java
2 3번 송태섭 북산고 168 80 75 70 80 75 Javascript
3 4번 서태웅 북산고 187 40 60 70 75 80 NaN
4 5번 강백호 북산고 188 15 20 10 35 10 NaN
5 6번 변덕규 능남고 202 80 100 95 85 80 C
6 7번 황태산 능남고 188 55 65 45 40 35 PYTHON
7 8번 윤대협 능남고 190 100 85 90 95 95 C#
grp = df.groupby('학교')
grp
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000273F60C5AC0>
grp.size()
학교
능남고    3
북산고    5
dtype: int64
values = [grp.size()['북산고'],grp.size()['능남고']] # [5, 3]
labels = ['북산고', '능남고']

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

댓글남기기