Matplotlib 데이터 시각화 기술

Beginner

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

소개

Matplotlib 는 Python 에서 강력한 데이터 시각화 라이브러리입니다. 다양한 그래프, 차트 및 플롯을 생성하기 위한 다양한 도구를 제공합니다. Matplotlib 의 가장 강력한 기능 중 하나는 데이터의 스케일링 능력입니다. 이 랩에서는 양수와 음수 값을 모두 포함하는 매우 넓은 동적 범위를 커버하는 양을 플로팅할 수 있게 해주는 변환인 AsinhScale 을 소개합니다.

VM 팁

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

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

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

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 80%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Matplotlib 설치

시작하기 전에 Matplotlib 가 설치되어 있는지 확인하십시오. 다음과 같이 pip 명령을 사용하여 설치할 수 있습니다.

pip install matplotlib

필요한 라이브러리 임포트

AsinhScale 을 사용하려면 Matplotlib 라이브러리와 numpy 라이브러리를 임포트해야 합니다. Numpy 는 Python 에서 강력한 수치 계산 라이브러리이며, Matplotlib 과 함께 자주 사용됩니다.

import matplotlib.pyplot as plt
import numpy as np

샘플 데이터 생성

AsinhScale 을 사용하여 데이터를 플롯하기 전에, 몇 가지 샘플 데이터를 생성해야 합니다. numpy 의 linspace 메서드를 사용하여 간단한 선 그래프를 생성할 것입니다.

## y=x 그래프의 변동에 대한 샘플 값 준비:
x = np.linspace(-3, 6, 500)

샘플 y=x 그래프에서 "symlog"와 "asinh" 동작 비교

샘플 y=x 그래프에서 "symlog"와 "asinh"의 동작을 비교해 보겠습니다. 동일한 그래프를 두 번 플롯할 것이며, 한 번은 "symlog"로, 다른 한 번은 "asinh"로 플롯합니다.

fig1 = plt.figure()
ax0, ax1 = fig1.subplots(1, 2, sharex=True)

ax0.plot(x, x)
ax0.set_yscale('symlog')
ax0.grid()
ax0.set_title('symlog')

ax1.plot(x, x)
ax1.set_yscale('asinh')
ax1.grid()
ax1.set_title('asinh')

서로 다른 스케일 파라미터 "linear_width"를 가진 "asinh" 그래프 비교

이제 서로 다른 스케일 파라미터 "linear_width"를 가진 "asinh" 그래프를 비교해 보겠습니다. 서로 다른 "linear_width" 값을 가진 세 개의 그래프를 플롯할 것입니다.

fig2 = plt.figure(layout='constrained')
axs = fig2.subplots(1, 3, sharex=True)
for ax, (a0, base) in zip(axs, ((0.2, 2), (1.0, 0), (5.0, 10))):
    ax.set_title(f'linear_width={a0:.3g}')
    ax.plot(x, x, label='y=x')
    ax.plot(x, 10*x, label='y=10x')
    ax.plot(x, 100*x, label='y=100x')
    ax.set_yscale('asinh', linear_width=a0, base=base)
    ax.grid()
    ax.legend(loc='best', fontsize='small')

2D 코시 분포 (Cauchy-distributed) 난수에 대한 "symlog" 및 "asinh" 스케일링 비교

마지막으로, 2D 코시 분포 (Cauchy-distributed) 난수에 대한 "symlog" 및 "asinh" 스케일링을 비교해 보겠습니다. 동일한 그래프를 두 번 플롯할 것이며, 한 번은 "symlog"로, 다른 한 번은 "asinh"로 플롯합니다.

fig3 = plt.figure()
ax = fig3.subplots(1, 1)
r = 3 * np.tan(np.random.uniform(-np.pi / 2.02, np.pi / 2.02,
                                 size=(5000,)))
th = np.random.uniform(0, 2*np.pi, size=r.shape)

ax.scatter(r * np.cos(th), r * np.sin(th), s=4, alpha=0.5)
ax.set_xscale('asinh')
ax.set_yscale('symlog')
ax.set_xlabel('asinh')
ax.set_ylabel('symlog')
ax.set_title('2D Cauchy random deviates')
ax.set_xlim(-50, 50)
ax.set_ylim(-50, 50)
ax.grid()

요약

이 랩에서는 Matplotlib 의 AsinhScale 을 소개했습니다. AsinhScale 은 양수와 음수 값을 모두 포함하는 매우 넓은 동적 범위를 커버하는 양을 플로팅할 수 있게 해주는 변환입니다. 샘플 데이터를 생성하는 방법과 "symlog" 및 "asinh"를 사용하여 그래프를 플롯하는 방법을 배웠습니다. 또한 서로 다른 스케일 파라미터를 가진 "asinh" 그래프를 비교하는 방법과 2D 코시 분포 (Cauchy-distributed) 난수에 대한 "symlog" 및 "asinh" 스케일링을 비교하는 방법을 배웠습니다.