Matplotlib 를 이용한 중첩 파이 차트

Beginner

This tutorial is from open-source community. Access the source code

소개

파이 차트는 데이터를 원형 형태로 표현하는 데 사용되는 인기 있는 데이터 시각화 도구입니다. 하지만 도넛 차트라고 알려진 파이 차트의 중첩 버전을 만들고 싶을 때가 있습니다. 이 튜토리얼에서는 Python 의 인기 있는 데이터 시각화 라이브러리인 Matplotlib 을 사용하여 중첩 파이 차트를 만드는 방법을 안내합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화할 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 즉시 해결해 드리겠습니다.

필요한 라이브러리 가져오기

먼저, 필요한 라이브러리를 가져와야 합니다. 이 경우 Matplotlibnumpy가 필요합니다.

import matplotlib.pyplot as plt
import numpy as np

ax.pie를 사용하여 중첩 파이 차트 만들기

ax.pie 메서드를 사용하여 중첩 파이 차트를 만들 수 있습니다. 먼저 세 그룹에 해당하는 가짜 데이터를 생성합니다. 내부 원에서는 각 숫자를 자체 그룹에 속하는 것으로 처리합니다. 외부 원에서는 원래 3 개 그룹의 구성원으로 플롯합니다.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()

ax.bar를 사용하여 중첩 파이 차트 만들기

극좌표계 (polar coordinate system) 를 가진 축에서 ax.bar 메서드를 사용하여 중첩 파이 차트를 만들 수도 있습니다. 이는 플롯의 정확한 디자인에 더 많은 유연성을 제공할 수 있습니다.

fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Normalize vals to 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Obtain the ordinates of the bar edges
valsleft = np.cumsum(np.append(0, valsnorm.flatten()[:-1])).reshape(vals.shape)

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.bar(x=valsleft[:, 0],
       width=valsnorm.sum(axis=1), bottom=1-size, height=size,
       color=outer_colors, edgecolor='w', linewidth=1, align="edge")

ax.bar(x=valsleft.flatten(),
       width=valsnorm.flatten(), bottom=1-2*size, height=size,
       color=inner_colors, edgecolor='w', linewidth=1, align="edge")

ax.set(title="Pie plot with `ax.bar` and polar coordinates")
ax.set_axis_off()
plt.show()

중첩 파이 차트 사용자 정의

색상을 변경하고, 레이블을 추가하고, 크기를 조정하여 중첩 파이 차트를 사용자 정의할 수 있습니다.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

## Add labels
labels = ['Group 1', 'Group 2', 'Group 3']
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=labels, labeldistance=0.7)

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

## Set the title
ax.set(aspect="equal", title='Nested Pie Chart')

plt.show()

중첩 파이 차트 저장

중첩 파이 차트를 png, pdf 또는 svg 형식의 이미지로 저장할 수 있습니다.

fig.savefig('nested_pie_chart.png', dpi=300, bbox_inches='tight')

요약

이 튜토리얼에서는 ax.pieax.bar 두 가지 방법을 사용하여 Matplotlib 에서 중첩 파이 차트를 만드는 방법을 배웠습니다. 또한 레이블 추가, 색상 변경, 크기 조정을 통해 중첩 파이 차트를 사용자 정의하는 방법도 배웠습니다. 마지막으로, 중첩 파이 차트를 png, pdf 또는 svg 형식의 이미지로 저장하는 방법을 살펴보았습니다.