데이터 분석을 위한 Matplotlib 시각화

Beginner

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

소개

이 튜토리얼에서는 Python 에서 Matplotlib 을 사용하여 시각화를 만드는 방법을 배웁니다. Matplotlib 은 Python 에서 다양한 차트와 그래프를 생성하는 데 사용되는 인기 있는 데이터 시각화 라이브러리입니다. Matplotlib 을 사용하면 선 그래프, 산점도, 막대 그래프, 히스토그램 및 기타 여러 유형의 시각화를 만들 수 있습니다.

VM 팁

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

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

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

Matplotlib 임포트

시각화를 만들기 전에 Matplotlib 라이브러리를 임포트해야 합니다. 또한 샘플 데이터를 생성하기 위해 NumPy 라이브러리를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

샘플 데이터 생성

시각화를 만드는 데 사용할 샘플 데이터를 생성해 보겠습니다. 각각 11 개의 x, y 데이터 포인트를 가진 네 개의 데이터 세트를 생성합니다.

x = [10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]
y1 = [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]
y2 = [9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]
y3 = [7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]
x4 = [8, 8, 8, 8, 8, 8, 8, 19, 8, 8, 8]
y4 = [6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]

서브플롯 (Subplots) 이 있는 Figure 생성

이제 각 데이터 세트에 대해 하나씩, 네 개의 서브플롯이 있는 Figure 를 생성합니다. 또한 모든 서브플롯에 대해 x 및 y 제한을 동일하게 설정합니다.

fig, axs = plt.subplots(2, 2, sharex=True, sharey=True, figsize=(6, 6),
                        gridspec_kw={'wspace': 0.08, 'hspace': 0.08})
axs[0, 0].set(xlim=(0, 20), ylim=(2, 14))
axs[0, 0].set(xticks=(0, 10, 20), yticks=(4, 8, 12))

데이터 플롯 (Plot)

각 서브플롯에 대해 x 및 y 데이터 포인트를 플롯하고 선형 회귀선 (linear regression line) 을 추가합니다. 또한 데이터에 대한 몇 가지 통계 정보를 포함하는 텍스트 상자도 추가합니다.

datasets = {
    'I': (x, y1),
    'II': (x, y2),
    'III': (x, y3),
    'IV': (x4, y4)
}

for ax, (label, (x, y)) in zip(axs.flat, datasets.items()):
    ax.text(0.1, 0.9, label, fontsize=20, transform=ax.transAxes, va='top')
    ax.tick_params(direction='in', top=True, right=True)
    ax.plot(x, y, 'o')

    ## linear regression
    p1, p0 = np.polyfit(x, y, deg=1)  ## slope, intercept
    ax.axline(xy1=(0, p0), slope=p1, color='r', lw=2)

    ## add text box for the statistics
    stats = (f'$\\mu$ = {np.mean(y):.2f}\n'
             f'$\\sigma$ = {np.std(y):.2f}\n'
             f'$r$ = {np.corrcoef(x, y)[0][1]:.2f}')
    bbox = dict(boxstyle='round', fc='blanchedalmond', ec='orange', alpha=0.5)
    ax.text(0.95, 0.07, stats, fontsize=9, bbox=bbox,
            transform=ax.transAxes, horizontalalignment='right')

plt.show()

결과 해석

결과 시각화는 서로 다른 데이터 세트를 보여주는 네 개의 서브플롯 세트입니다. x 및 y 제한은 모든 서브플롯에 대해 동일합니다. 각 서브플롯에는 x 및 y 데이터 포인트와 선형 회귀선이 포함되어 있습니다. 각 서브플롯의 오른쪽 하단 모서리에 있는 텍스트 상자는 평균, 표준 편차 및 상관 계수를 포함하여 데이터에 대한 몇 가지 통계 정보를 보여줍니다.

요약

이 튜토리얼에서는 Python 에서 Matplotlib 을 사용하여 시각화를 만드는 방법을 배웠습니다. 서브플롯이 있는 그림을 만들고, 데이터 포인트를 플롯하고, 선형 회귀선을 추가하고, 데이터에 대한 통계가 있는 텍스트 상자를 추가하는 방법을 배웠습니다. Matplotlib 을 사용하면 데이터를 탐색하고 분석하기 위해 다양한 시각화를 만들 수 있습니다.