Matplotlib 축 및 컬러바 사용자 정의

Beginner

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

소개

Matplotlib 는 Python 에서 정적, 애니메이션, 대화형 시각화를 생성할 수 있게 해주는 Python 라이브러리입니다. 과학 컴퓨팅, 데이터 분석, 머신 러닝 등 다양한 분야에서 널리 사용됩니다. 이 랩에서는 Matplotlib 를 사용하여 이미지를 플롯하는 방법과 축 및 컬러바의 위치를 조작하는 방법을 배우게 됩니다.

VM 팁

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

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

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

라이브러리 임포트

이 단계에서는 이 랩에서 사용할 필수 라이브러리를 임포트합니다. 샘플 이미지를 얻기 위해 matplotlib.pyplotmatplotlibcbook을 사용합니다.

import matplotlib.pyplot as plt
from matplotlib import cbook

데모 이미지 가져오기

이 단계에서는 데모 이미지와 해당 범위를 가져오는 함수를 정의합니다. cbookget_sample_data() 함수를 사용하여 샘플 이미지를 가져옵니다.

def get_demo_image():
    z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
    return z, (-3, 4, -4, 3)

간단한 이미지와 컬러바

이 단계에서는 간단한 이미지와 해당 컬러바를 생성합니다. 이미지를 생성하기 위해 pyplotimshow() 함수를 사용하고, 컬러바를 생성하기 위해 colorbar() 함수를 사용합니다.

def demo_simple_image(ax):
    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    cb = plt.colorbar(im)
    cb.ax.yaxis.set_tick_params(labelright=False)

그리기 시점 위치 지정으로 이미지와 컬러바 - 어려운 방법

이 단계에서는 어려운 방법으로 그리기 시점 위치 지정을 사용하여 이미지와 해당 컬러바를 생성합니다. 축과 컬러바에 대한 분할자를 생성하기 위해 mpl_toolkits.axes_grid1SubplotDivider를 사용합니다.

def demo_locatable_axes_hard(fig):
    from mpl_toolkits.axes_grid1 import Size, SubplotDivider

    divider = SubplotDivider(fig, 2, 2, 2, aspect=True)

    ## axes for image
    ax = fig.add_subplot(axes_locator=divider.new_locator(nx=0, ny=0))
    ## axes for colorbar
    ax_cb = fig.add_subplot(axes_locator=divider.new_locator(nx=2, ny=0))

    divider.set_horizontal([
        Size.AxesX(ax),  ## main axes
        Size.Fixed(0.05),  ## padding, 0.1 inch
        Size.Fixed(0.2),  ## colorbar, 0.3 inch
    ])
    divider.set_vertical([Size.AxesY(ax)])

    Z, extent = get_demo_image()

    im = ax.imshow(Z, extent=extent)
    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.set_tick_params(labelright=False)

그리기 시점 위치 지정으로 이미지와 컬러바 - 쉬운 방법

이 단계에서는 쉬운 방법으로 그리기 시점 위치 지정을 사용하여 이미지와 해당 컬러바를 생성합니다. 축과 컬러바에 대한 분할자를 생성하기 위해 mpl_toolkits.axes_grid1make_axes_locatable을 사용합니다.

def demo_locatable_axes_easy(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    ax_cb = divider.append_axes("right", size="5%", pad=0.05)
    fig = ax.get_figure()
    fig.add_axes(ax_cb)

    Z, extent = get_demo_image()
    im = ax.imshow(Z, extent=extent)

    plt.colorbar(im, cax=ax_cb)
    ax_cb.yaxis.tick_right()
    ax_cb.yaxis.set_tick_params(labelright=False)

고정 패딩을 사용한 나란히 두 이미지

이 단계에서는 고정 패딩을 사용하여 나란히 두 개의 이미지를 생성합니다. 축과 컬러바에 대한 분할자를 생성하기 위해 mpl_toolkits.axes_grid1make_axes_locatable을 사용합니다.

def demo_images_side_by_side(ax):
    from mpl_toolkits.axes_grid1 import make_axes_locatable

    divider = make_axes_locatable(ax)

    Z, extent = get_demo_image()
    ax2 = divider.append_axes("right", size="100%", pad=0.05)
    fig1 = ax.get_figure()
    fig1.add_axes(ax2)

    ax.imshow(Z, extent=extent)
    ax2.imshow(Z, extent=extent)
    ax2.yaxis.set_tick_params(labelleft=False)

플로팅 (Plotting)

이 단계에서는 그림을 생성하고 생성하려는 각 이미지에 대한 서브플롯을 추가합니다.

def demo():
    fig = plt.figure(figsize=(6, 6))

    ## PLOT 1
    ## simple image & colorbar
    ax = fig.add_subplot(2, 2, 1)
    demo_simple_image(ax)

    ## PLOT 2
    ## image and colorbar with draw-time positioning -- a hard way
    demo_locatable_axes_hard(fig)

    ## PLOT 3
    ## image and colorbar with draw-time positioning -- an easy way
    ax = fig.add_subplot(2, 2, 3)
    demo_locatable_axes_easy(ax)

    ## PLOT 4
    ## two images side by side with fixed padding.
    ax = fig.add_subplot(2, 2, 4)
    demo_images_side_by_side(ax)

    plt.show()

요약

이 랩에서는 Matplotlib 을 사용하여 이미지를 플로팅하는 방법과 축 및 컬러바의 위치를 조작하는 방법을 배웠습니다. 이미지를 생성하고 컬러바를 생성하는 다양한 방법과 그림 내에서 해당 위치를 지정하는 방법을 다루었습니다. 이 랩에서 얻은 지식을 통해 더 복잡한 시각화를 생성하고 필요에 맞게 조작할 수 있습니다.