Matplotlib 중첩 GridSpecs

Beginner

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

소개

이 랩에서는 Matplotlib 에서 중첩된 .GridSpec을 사용하여 크기가 다양한 서브플롯 (subplot) 그리드를 만드는 방법을 배우게 됩니다. 이는 복잡한 플롯 레이아웃을 생성하고 각 플롯의 크기와 간격을 제어하려는 경우에 유용합니다.

VM 팁

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

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

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

라이브러리 임포트

먼저, 필요한 라이브러리를 임포트해야 합니다. 플롯을 생성하기 위해 matplotlib.pyplot을 사용하고, 플롯할 데이터를 생성하기 위해 numpy를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

데이터 생성

이 단계에서는 플롯할 데이터를 생성합니다. squiggle_xy 함수를 사용하여 서로 다른 주파수를 가진 사인파와 코사인파를 생성합니다.

def squiggle_xy(a, b, c, d):
    i = np.arange(0.0, 2*np.pi, 0.05)
    return np.sin(i*a)*np.cos(i*b), np.sin(i*c)*np.cos(i*d)

Figure 및 외부 그리드 생성

다음으로, add_gridspec 함수를 사용하여 figure 와 외부 그리드를 생성합니다. 서브플롯 간 간격 없이 4x4 그리드를 생성합니다.

fig = plt.figure(figsize=(8, 8))
outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0)

내부 그리드 및 서브플롯 생성

이 단계에서는 중첩된 .GridSpec을 사용하여 내부 그리드와 서브플롯을 생성합니다. 외부 그리드의 각 셀을 반복하고 각 셀에 대해 3x3 그리드를 생성합니다.

for a in range(4):
    for b in range(4):
        ## gridspec inside gridspec
        inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0)
        axs = inner_grid.subplots()  ## Create all subplots for the inner grid.
        for (c, d), ax in np.ndenumerate(axs):
            ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1))
            ax.set(xticks=[], yticks=[])

외부 스파인만 표시

이 단계에서는 내부 서브플롯의 스파인을 제거하고 외부 스파인만 표시합니다. 이렇게 하면 플롯이 더 깔끔하게 보입니다.

for ax in fig.get_axes():
    ss = ax.get_subplotspec()
    ax.spines.top.set_visible(ss.is_first_row())
    ax.spines.bottom.set_visible(ss.is_last_row())
    ax.spines.left.set_visible(ss.is_first_col())
    ax.spines.right.set_visible(ss.is_last_col())

플롯 표시

마지막으로, show() 함수를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 랩에서는 Matplotlib 에서 중첩된 .GridSpec을 사용하여 다양한 크기의 서브플롯 그리드를 만드는 방법을 배웠습니다. 또한 numpy를 사용하여 데이터를 생성하고 서브플롯의 스파인을 사용자 정의하는 방법도 배웠습니다. 이 지식을 통해 크기와 간격을 정밀하게 제어하여 복잡한 플롯 레이아웃을 만들 수 있습니다.