소개
이 튜토리얼은 matplotlib 을 사용하여 줌 효과를 만드는 방법을 안내합니다. 줌 효과를 통해 두 개의 서로 다른 축을 연결하고 확대할 수 있습니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 가져오기
이 단계에서는 이 튜토리얼에 필요한 필수 라이브러리를 가져오겠습니다. matplotlib 과 mpl_toolkits.axes_grid1 에서 관련 라이브러리를 가져오겠습니다.
import matplotlib.pyplot as plt
from matplotlib.transforms import (Bbox, TransformedBbox,
blended_transform_factory)
from mpl_toolkits.axes_grid1.inset_locator import (BboxConnector,
BboxConnectorPatch,
BboxPatch)
축 간의 연결 정의
이 단계에서는 두 축 사이의 연결을 정의합니다. 이 함수는 두 개의 축을 입력으로 받으며, x 축의 최소값과 최대값을 입력으로 받습니다. 그런 다음 경계 상자 (bounding box) 를 생성하고 두 축을 연결합니다.
def zoom_effect01(ax1, ax2, xmin, xmax, **kwargs):
bbox = Bbox.from_extents(xmin, 0, xmax, 1)
mybbox1 = TransformedBbox(bbox, ax1.get_xaxis_transform())
mybbox2 = TransformedBbox(bbox, ax2.get_xaxis_transform())
prop_patches = {**kwargs, "ec": "none", "alpha": 0.2}
c1, c2, bbox_patch1, bbox_patch2, p = connect_bbox(
mybbox1, mybbox2,
loc1a=3, loc2a=2, loc1b=4, loc2b=1,
prop_lines=kwargs, prop_patches=prop_patches)
ax1.add_patch(bbox_patch1)
ax2.add_patch(bbox_patch2)
ax2.add_patch(c1)
ax2.add_patch(c2)
ax2.add_patch(p)
return c1, c2, bbox_patch1, bbox_patch2, p
두 번째 확대 축 생성
이 단계에서는 두 번째 확대 축을 생성합니다. 이 함수는 두 개의 축을 입력으로 받습니다. 그런 다음 두 번째 축에 대한 경계 상자 (bounding box) 를 생성하고 이를 첫 번째 축에 연결합니다.
def zoom_effect02(ax1, ax2, **kwargs):
tt = ax1.transScale + (ax1.transLimits + ax2.transAxes)
trans = blended_transform_factory(ax2.transData, tt)
mybbox1 = ax1.bbox
mybbox2 = TransformedBbox(ax1.viewLim, trans)
prop_patches = {**kwargs, "ec": "none", "alpha": 0.2}
c1, c2, bbox_patch1, bbox_patch2, p = connect_bbox(
mybbox1, mybbox2,
loc1a=3, loc2a=2, loc1b=4, loc2b=1,
prop_lines=kwargs, prop_patches=prop_patches)
ax1.add_patch(bbox_patch1)
ax2.add_patch(bbox_patch2)
ax2.add_patch(c1)
ax2.add_patch(c2)
ax2.add_patch(p)
return c1, c2, bbox_patch1, bbox_patch2, p
축 연결
이 단계에서는 축을 연결하고 확대 효과를 생성합니다. 네 개의 축이 있는 그림 (figure) 을 생성하고 zoom_effect01 및 zoom_effect02 함수를 사용하여 연결합니다.
axs = plt.figure().subplot_mosaic([
["zoom1", "zoom2"],
["main", "main"],
])
axs["main"].set(xlim=(0, 5))
zoom_effect01(axs["zoom1"], axs["main"], 0.2, 0.8)
axs["zoom2"].set(xlim=(2, 3))
zoom_effect02(axs["zoom2"], axs["main"])
plt.show()
요약
이 튜토리얼에서는 matplotlib 을 사용하여 확대 효과를 만드는 방법을 배웠습니다. 먼저 축을 연결하는 함수를 정의한 다음, 두 번째 확대 축을 생성하는 두 번째 함수를 만들었습니다. 마지막으로, 축을 연결하고 확대 효과를 생성했습니다.