바이오 대표

[ matplotlib #9 ] Python matplotlib.pyplot 기본 코드 한번에 정리_9 (Pie 막대그래프) 본문

Python/matplotlib

[ matplotlib #9 ] Python matplotlib.pyplot 기본 코드 한번에 정리_9 (Pie 막대그래프)

바이오 대표 2022. 7. 9. 14:37

 

Matplotlib Pie Chart 파이차트

정리 1~ 7 에서 python matplotlib.pyplot 의 전반적인 설명과 plotting plt.plot( ), marker, line, label, grid, subplot, scatter, bars plot 에 대해서 살펴보았습니다. 이번 글에서는 해당 라이브러리로 Pie chart 파이차트 에 대한 설명합니다. 

  • pie chart  plt.pie( ) 
  • argument
    • labels labels
    • decimal autopct = '%.1f%%' 예시, 소숫점 한자리 까지 표현 
    • start angle startangle
    • 특정범주 분리해서 보이기 explode
  • legend plt.legend( ) 

 

Pie chart 파이 차트 그리기

Pie chart (파이 차트, 원 그래프)는 범주별 구성 비율을 원형으로 표현한 차트 입니다. 따라서, 파이 차트로 범주가 전체에서 어느정도 차지하는 지를 한눈에 확인 할 수 있습니다. 

plt.pie(x,  y

 

예시) 

import matplotlib.pyplot as plt
import numpy as np

y = np.array([40, 25, 20, 15])  # ratio

plt.pie(y)
plt.show()

* 파이 차트는 default 값으로 array의 뒤에서부터 x-axis (0도) 를 축으로 시작합니다. 위의 그래프를 보면 빨간색 부분 즉 15% 그리고, 20,25,40 순으로 표시됩니다. 

 

 

Labels 과 비율(%) 표시하기 

모든 그래프의 목적은 한눈에 정보를 파악하는데 있습니다. 따라서 해당 그래프가 무엇을 표현하는지 모르는 사람들을 위해 labels 과 필욯다면 비율까지 표시해주는 것이 좋습니다. 라벨은 argument labels 로 비율은 autopct = '%.1f%%' 로 표현가능합니다. '%.0f%%' 는 정수만, '%.1f%%' 는 소수점 첫째자리까지, '%.2f%%' 는 소수점 두째자리까지 표현합니다. 

import matplotlib.pyplot as plt
import numpy as np

y = np.array([40, 25, 20, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Kiwis"]

plt.pie(y, labels=mylabels, autopct='%.0f%%')
plt.show()

plt.legend 를 이용해서 따로 label 을 보일 수 도 있습니다. 

...
plt.legend(mylabels)
plt.show()

* legend argument 로 title 작성 가능합니다. 

 

 

시작 위치 

위에서 언급한 바와 같이 원래 시작(default 값)은 x-axis 혹은 0도 입니다. argument startangle 을 이용해 이를 변경할 수 있습니다.  파이 차트를 돌린다고 생각하면 됩니다. 이 때 차트는 반시계 방향으로 회전합니다.  

...
plt.pie(y, labels=mylabels, autopct='%.0f%%', startangle = 90)
...

 

 

파이차트 응용 (explode, 그림자, 색, 모양) 

Explode (특정 범주 중신에서 떨어트리기) 

우리가 특정 범주에 더 관심이 있고 그것을 강조하고 싶다면, 다음과 같이 해당 범주만 분리해서 강조할 수 있습니다. 이때 argument explode = [ %, % ,,,% ] 해당 비율은 범주가 파이 차트 중심에서 벗어나는 정도 입니다. 만약 Apple이 10% 벗어나도록 표현하고 싶다면, 다음과 같이 할 수 있습니다. 

import matplotlib.pyplot as plt
import numpy as np

y = np.array([40, 25, 20, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Kiwis"]
myexplode = [0.1,0,0,0]

plt.pie(y, labels=mylabels, autopct='%.0f%%', explode = myexplode)

 

그림자 나타내기 

간단하게 argument shadow=True 로 나타낼 수 있습니다. 

...
plt.pie(y, labels=mylabels, autopct='%.0f%%', explode = myexplode, shadow=True)
Plt.show()

 

색상 변경하기

각각의 범주 (wedge)의 색상을 변경 할 수 있습니다. array 로 원하는 색을 지정하고 colors 를 이용해 설정합니다. 이때, 다른 차트와 마찬가지로, [1] 단축어 'r,g,b,c,m,y,k,w' [2] hexa code Hexadecimal color values [3] color names 140 supported color names 를 이용 할 수 있습니다.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([40, 25, 20, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Kiwis"]
myexplode = [0.05,0.05,0.05,0.05]
mycolors = ['gold', '#8fd9b6', '#d395d0', 'lightgray']

plt.pie(y, labels=mylabels, autopct='%.0f%%', explode = myexplode, colors = mycolors)
plt.show()

 

차트 모양 변경하기 

파이 차트를 원형이 아닌 부채꼴로도 표현이 가능합니다. 이때, wedgeprops 의 width, edgecolor, linewidth 를 이용해 부채꼴의 영역 너비, 테두리 선 색상, 너비 설정 가능합니다. 

 

예시) 

import matplotlib.pyplot as plt
import numpy as np

y = np.array([40, 25, 20, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Kiwis"]

mycolors = ['gold', '#8fd9b6', '#d395d0', 'lightgray']
wedgeprops={'width': 0.7, 'edgecolor': 'w', 'linewidth': 3}

plt.pie(y, labels=mylabels, autopct='%.0f%%',  colors = mycolors, wedgeprops=wedgeprops)
plt.show()