소개
Matplotlib 는 Python 에서 정적, 애니메이션, 대화형 시각화를 생성할 수 있게 해주는 Python 라이브러리입니다. 과학 컴퓨팅, 데이터 분석, 머신 러닝 등 다양한 분야에서 널리 사용됩니다. 이 랩에서는 Matplotlib 를 사용하여 이미지를 플롯하는 방법과 축 및 컬러바의 위치를 조작하는 방법을 배우게 됩니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 임포트
이 단계에서는 이 랩에서 사용할 필수 라이브러리를 임포트합니다. 샘플 이미지를 얻기 위해 matplotlib.pyplot과 matplotlib의 cbook을 사용합니다.
import matplotlib.pyplot as plt
from matplotlib import cbook
데모 이미지 가져오기
이 단계에서는 데모 이미지와 해당 범위를 가져오는 함수를 정의합니다. cbook의 get_sample_data() 함수를 사용하여 샘플 이미지를 가져옵니다.
def get_demo_image():
z = cbook.get_sample_data("axes_grid/bivariate_normal.npy") ## 15x15 array
return z, (-3, 4, -4, 3)
간단한 이미지와 컬러바
이 단계에서는 간단한 이미지와 해당 컬러바를 생성합니다. 이미지를 생성하기 위해 pyplot의 imshow() 함수를 사용하고, 컬러바를 생성하기 위해 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_grid1의 SubplotDivider를 사용합니다.
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_grid1의 make_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_grid1의 make_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 을 사용하여 이미지를 플로팅하는 방법과 축 및 컬러바의 위치를 조작하는 방법을 배웠습니다. 이미지를 생성하고 컬러바를 생성하는 다양한 방법과 그림 내에서 해당 위치를 지정하는 방법을 다루었습니다. 이 랩에서 얻은 지식을 통해 더 복잡한 시각화를 생성하고 필요에 맞게 조작할 수 있습니다.