[AITech] 20220211 - Pie Chart

1 minute read


학습 내용

Pie Chart&Bar Chart

Pie Chart는 원을 부채꼴로 분할하여 표현하는 통계 차트로, 전체를 백분위로 나타낼 때 유용합니다.

많이 사용되는 차트지만, 비슷한 값끼리는 세세한 비교가 어렵기 때문에 bar plot을 사용하는 것이 더 나을 수 있습니다.

Basic Pie Chart

  • pie()
labels = ['A', 'B', 'C', 'D']
data = np.array([60, 90, 45, 165]) # total 360

fig, ax = plt.subplots(1, 1, figsize=(7, 7))
ax.pie(data, 
       labels=labels
      )
plt.show()

image-20220212222502762

Pie Chart VS Bar Plot

같은 데이터로 Pie chart와 Bar Chart를 비교하며 장단점을 비교하면 다음과 같습니다.

  • 장점 : 비율 정보에 대한 정보를 제공할 수 있다.
  • 단점 : 구체적인 양의 비교가 어렵다.

실제로 다음과 같이 비슷한 값들에 대해서는 비교가 어렵습니다.

np.random.seed(97)

data = np.array([16, 18, 20, 22, 24])
labels = list('ABCDE')
color = plt.cm.get_cmap('tab10').colors[:5]
fig, axes = plt.subplots(2, 3, figsize=(15, 10))

for i in range(3):
    axes[0][i].pie(data, labels=labels)
    axes[1][i].bar(labels, data, color=color)
    np.random.shuffle(data)

plt.show()

image-20220212222640617

Pie Chart Custom

  • startangle: 시작 각도를 조정합니다.
  • explode: data의 길이만큼의 list를 전달합니다. 양수 값을 전달하면 해당 부분이 원에서 그만큼 떨어져 나옵니다.
  • shadow: 차트에 음영을 추가합니다.
  • autopct: 차트에 값을 표시합니다.
  • labeldistance: label을 표시하는 거리를 조정합니다.
  • rotatelabels: label의 각도를 조정합니다.
  • counterclock: False로 지정하면 시계 방향으로 data를 나타냅니다.
  • radius: 차트의 반지름 크기를 지정합니다.
labels = ['A', 'B', 'C', 'D']
data = np.array([60, 90, 45, 165]) # total 360

fig, ax = plt.subplots(1, 1, figsize=(7,7))

ax.pie(data, 
       labels=labels,
       startangle=90,
       explode=[0, 0, 0.2, 0],
       shadow=True,
       autopct='%1.1f%%',
       labeldistance=1.15,
       rotatelabels=90,
       counterclock=False,
       radius=1
       )

plt.show()

image-20220212224026375


Pie Chart 변형

Donut Chart

중간에 원을 그리는 방식으로 그려집니다.

fig, ax = plt.subplots(1, 1, figsize=(7, 7))

ax.pie(data, labels=labels, startangle=90,
      shadow=True, autopct='%1.1f%%')

# 좌표 0, 0, r=0.7, facecolor='white'
centre_circle = plt.Circle((0,0),0.70,fc='white')
ax.add_artist(centre_circle)

plt.show()

image-20220212224139861

다음 두 파라미터로 커스텀할 수 있습니다.

  • pctdistance
  • textprops
fig, ax = plt.subplots(1, 1, figsize=(7, 7))

ax.pie(data, labels=labels, startangle=90,
      shadow=True, autopct='%1.1f%%', pctdistance=0.85, textprops={'color':"w"})

# 좌표 0, 0, r=0.7, facecolor='white'
centre_circle = plt.Circle((0,0),0.70,fc='white')
ax.add_artist(centre_circle)

plt.show()

image-20220212224224565



참고 자료


Leave a comment