Matplotlib 를 이용한 서브플롯 레이블링

Beginner

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

소개

Matplotlib 는 Python 에서 널리 사용되는 데이터 시각화 라이브러리입니다. 서브플롯을 포함하여 다양한 유형의 플롯을 생성하기 위한 다양한 도구를 제공합니다. 서브플롯을 생성할 때, 독자가 제시된 정보를 더 쉽게 이해할 수 있도록 각 플롯에 레이블을 지정하는 것이 종종 도움이 됩니다. 이 랩에서는 Matplotlib 에서 제공하는 다양한 방법을 사용하여 서브플롯에 레이블을 지정하는 방법을 배웁니다.

VM 팁

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

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

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

라이브러리 임포트

첫 번째 단계는 필요한 라이브러리를 임포트하는 것입니다. 서브플롯을 생성하고 변환하기 위해 matplotlib.pyplotmatplotlib.transforms를 사용합니다.

import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms

서브플롯 생성

다음으로, plt.subplot_mosaic를 사용하여 서브플롯을 생성합니다. 3x2 그리드의 서브플롯을 생성하고 다음과 같이 레이블을 지정합니다.

  • 왼쪽 상단 플롯은 "a)"로 레이블이 지정됩니다.
  • 왼쪽 하단 플롯은 "b)"로 레이블이 지정됩니다.
  • 오른쪽 상단 및 오른쪽 하단 플롯은 각각 "c)"와 "d)"로 레이블이 지정됩니다.
fig, axs = plt.subplot_mosaic([['a)', 'c)'], ['b)', 'c)'], ['d)', 'd)']], layout='constrained')

축 내부 레이블 지정

서브플롯에 레이블을 지정하는 가장 간단한 방법은 축 내부에 레이블을 넣는 것입니다. ax.text 메서드를 사용하여 이를 수행할 수 있습니다. 각 서브플롯을 반복하고 ax.transAxes를 사용하여 축 내부에 레이블을 추가합니다.

for label, ax in axs.items():
    ## label physical distance in and down:
    trans = mtransforms.ScaledTranslation(10/72, -5/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', verticalalignment='top', fontfamily='serif',
            bbox=dict(facecolor='0.7', edgecolor='none', pad=3.0))

축 외부 레이블 지정

축 외부에 레이블을 지정하되 서로 정렬되도록 하는 것이 더 나을 수 있습니다. 이 경우 약간 다른 변환 (transform) 을 사용합니다.

for label, ax in axs.items():
    ## label physical distance to the left and up:
    trans = mtransforms.ScaledTranslation(-20/72, 7/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', va='bottom', fontfamily='serif')

제목과 함께 레이블 지정

레이블을 제목과 정렬하고 싶다면, 제목에 통합하거나 loc 키워드 인수를 사용할 수 있습니다.

for label, ax in axs.items():
    ax.set_title('Normal Title', fontstyle='italic')
    ax.set_title(label, fontfamily='serif', loc='left', fontsize='medium')

서브플롯 표시

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

plt.show()

요약

이 Lab 에서는 Matplotlib 에서 다양한 방법을 사용하여 서브플롯에 레이블을 지정하는 방법을 배웠습니다. 축 내부에 레이블을 지정하기 위해 ax.text를 사용했고, 제목과 함께 레이블을 지정하기 위해 ax.set_title을 사용했으며, 서브플롯을 생성하기 위해 plt.subplot_mosaic를 사용했습니다. 또한 레이블을 정렬하기 위해 matplotlib.transforms를 사용하여 축을 변환했습니다. 서브플롯에 레이블을 지정함으로써, 플롯을 더욱 유익하고 이해하기 쉽게 만들 수 있습니다.