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 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

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

바이올린 플롯을 만들기 위해 필요한 라이브러리를 가져오는 것으로 시작합니다.

import matplotlib.pyplot as plt
import numpy as np

샘플 데이터 세트 생성

numpy 라이브러리를 사용하여 샘플 데이터 세트를 생성합니다. 서로 다른 표준 편차를 가진 6 개의 데이터 세트를 생성합니다.

## Fixing random state for reproducibility
np.random.seed(19680801)

## fake data
pos = [1, 2, 4, 5, 7, 8]
data = [np.random.normal(0, std, size=100) for std in pos]

사용자 정의 바이올린 플롯 생성

다양한 매개변수를 수정하여 사용자 정의 바이올린 플롯을 생성합니다. 서로 다른 매개변수를 사용하여 5 개의 사용자 정의 바이올린 플롯을 생성합니다.

fig, axs = plt.subplots(nrows=2, ncols=5, figsize=(10, 6))

## Custom violinplot 1
axs[0, 0].violinplot(data, pos, points=20, widths=0.3,
                     showmeans=True, showextrema=True, showmedians=True)
axs[0, 0].set_title('Custom violinplot 1', fontsize=fs)

## Custom violinplot 2
axs[0, 1].violinplot(data, pos, points=40, widths=0.5,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method='silverman')
axs[0, 1].set_title('Custom violinplot 2', fontsize=fs)

## Custom violinplot 3
axs[0, 2].violinplot(data, pos, points=60, widths=0.7, showmeans=True,
                     showextrema=True, showmedians=True, bw_method=0.5)
axs[0, 2].set_title('Custom violinplot 3', fontsize=fs)

## Custom violinplot 4
axs[0, 3].violinplot(data, pos, points=60, widths=0.7, showmeans=True,
                     showextrema=True, showmedians=True, bw_method=0.5,
                     quantiles=[[0.1], [], [], [0.175, 0.954], [0.75], [0.25]])
axs[0, 3].set_title('Custom violinplot 4', fontsize=fs)

## Custom violinplot 5
axs[0, 4].violinplot(data[-1:], pos[-1:], points=60, widths=0.7,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[0.05, 0.1, 0.8, 0.9], bw_method=0.5)
axs[0, 4].set_title('Custom violinplot 5', fontsize=fs)

더 많은 사용자 정의 바이올린 플롯 생성

다양한 매개변수를 사용하여 더 많은 사용자 정의 바이올린 플롯을 생성합니다.

## Custom violinplot 6
axs[1, 0].violinplot(data, pos, points=80, vert=False, widths=0.7,
                     showmeans=True, showextrema=True, showmedians=True)
axs[1, 0].set_title('Custom violinplot 6', fontsize=fs)

## Custom violinplot 7
axs[1, 1].violinplot(data, pos, points=100, vert=False, widths=0.9,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method='silverman')
axs[1, 1].set_title('Custom violinplot 7', fontsize=fs)

## Custom violinplot 8
axs[1, 2].violinplot(data, pos, points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method=0.5)
axs[1, 2].set_title('Custom violinplot 8', fontsize=fs)

## Custom violinplot 9
axs[1, 3].violinplot(data, pos, points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[[0.1], [], [], [0.175, 0.954], [0.75], [0.25]],
                     bw_method=0.5)
axs[1, 3].set_title('Custom violinplot 9', fontsize=fs)

## Custom violinplot 10
axs[1, 4].violinplot(data[-1:], pos[-1:], points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[0.05, 0.1, 0.8, 0.9], bw_method=0.5)
axs[1, 4].set_title('Custom violinplot 10', fontsize=fs)

플롯 모양 사용자 정의

y 축 레이블을 제거하고 플롯에 제목을 추가하여 플롯의 모양을 사용자 정의합니다.

for ax in axs.flat:
    ax.set_yticklabels([])

fig.suptitle("Violin Plotting Examples")
fig.subplots_adjust(hspace=0.4)
plt.show()

요약

이 랩에서는 Python 의 Matplotlib 라이브러리를 사용하여 바이올린 플롯을 만드는 방법을 배웠습니다. 점의 수, KDE (Kernel Density Estimation, 커널 밀도 추정) 대역폭 및 분위수와 같은 다양한 매개변수를 수정하여 사용자 정의 바이올린 플롯을 만들었습니다. 또한 y 축 레이블을 제거하고 플롯에 제목을 추가하여 플롯의 모양을 사용자 정의하는 방법도 배웠습니다.