본문 바로가기
파이썬/파이썬 시각화

Matploblib) 데이터 시각화 6편, 원 그래프, 도넛 모양 원 그래프

by SeH_ 2023. 1. 17.
반응형

나도코딩 유튜브를 참고하여 적었습니다! 


 

plt.plot(x,y)를 통해 꺾은선 그래프를 그렸습니다.

plt.bar(x,y)를 통해 막대그래프를 그렸습니다.

 

원 그래프를 그리는 실습을 진행하겠습니다.

1. 원 차트 그리기

# 원 그래프

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']

plt.pie(values,labels=labels,autopct = '%.1f%%',startangle = 90, counterclock=False)
#autopct : 백분율 계산해줌



plt.show()

explode 함수를 적용하면 좀 더 강조 효과를 낼 수 있습니다. 

# 원 그래프

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']
explode  = [0.05]*6
plt.pie(values,labels=labels,autopct = '%.1f%%',startangle = 90, counterclock=False,explode=explode)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌



plt.show()

 

 

2. 도넛 차트 그리기, wedgeprops 응용

#explode를 제거하면 차트 내 빈칸 없어집니다! 

# 원 그래프

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']
explode  = [0.05]*6
wedgeprops = {'width' : 0.8}
plt.pie(values,labels=labels,colors = colors, autopct = '%.1f%%',startangle = 90, counterclock=False,explode=explode,wedgeprops=wedgeprops)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌



plt.show()

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']

wedgeprops = {'width' : 0.6,'edgecolor' :'w', 'linewidth': 5}
plt.pie(values,labels=labels,colors = colors, autopct = '%.1f%%',startangle = 90, counterclock=False,wedgeprops=wedgeprops)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌



plt.show()

 

legend가 이쁘지 않게 나오기 때문에 wedgeprops의 테두리 선을 조정하여 같은 효과를 낼 수 있습니다. 

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']

wedgeprops = {'width' : 0.6,'edgecolor' :'w', 'linewidth': 5}
plt.pie(values,labels=labels,colors = colors, autopct = '%.1f%%',startangle = 90, counterclock=False,wedgeprops=wedgeprops)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌



plt.show()

 

 

10% 이하의 데이터의 수치를 버리고 싶을 때

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
import numpy as np


matplotlib.rcParams['font.family'] = 'Malgun Gothic'
matplotlib.rcParams['font.size'] = 15 
matplotlib.rcParams['axes.unicode_minus'] = False

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


# 원 그래프

values = [30,25,20,13,10,2]
labels = ['python','java','javascript','c','c++','etc']
colors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff']

wedgeprops = {'width' : 0.6,'edgecolor' :'w', 'linewidth': 5}
plt.pie(values,labels=labels,colors = colors, autopct = custom_autopct,startangle = 90, counterclock=False,wedgeprops=wedgeprops,pctdistance=0.7)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌


plt.show()

3. DataFrame을 원차트로 응용해 보겠습니다.

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
import numpy as np


matplotlib.rcParams['font.family'] = 'Malgun Gothic'
matplotlib.rcParams['font.size'] = 15 
matplotlib.rcParams['axes.unicode_minus'] = False

df = pd.read_excel('score.xlsx')
grp = df.groupby('학교')
values = [grp.size()['북산고'],grp.size()['능남고']]
labels = ['북산고','능남고']
plt.pie(values,labels=labels,startangle = 90, counterclock=False,pctdistance=0.7)
plt.legend(loc=(1.2,0.3))
#autopct : 백분율 계산해줌


plt.show()

댓글