Matplotlib 축 방향 변경

Beginner

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

소개

이 랩에서는 set_axis_direction() 메서드를 사용하여 Matplotlib 플롯에서 축 방향을 변경하는 방법을 배우게 됩니다. 이 메서드를 사용하면 축의 방향을 상단, 하단, 왼쪽 또는 오른쪽의 네 가지 기본 방향 중 하나로 변경할 수 있습니다.

VM 팁

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

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

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

라이브러리 임포트

먼저, 이 랩에 필요한 라이브러리를 임포트해야 합니다. numpymatplotlib을 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

플롯 설정

다음으로, 직사각형 상자에 극좌표 투영을 설정하는 함수 setup_axes()를 정의합니다. 이 함수는 GridHelperCurveLinear를 사용하여 직사각형 상자가 있는 극좌표 투영을 생성합니다.

from matplotlib.projections import PolarAxes
from matplotlib.transforms import Affine2D
import mpl_toolkits.axisartist as axisartist
import mpl_toolkits.axisartist.angle_helper as angle_helper
import mpl_toolkits.axisartist.grid_finder as grid_finder
from mpl_toolkits.axisartist.grid_helper_curvelinear import \
    GridHelperCurveLinear

def setup_axes(fig, rect):
    """Polar projection, but in a rectangular box."""
    grid_helper = GridHelperCurveLinear(
        Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform(),
        extreme_finder=angle_helper.ExtremeFinderCycle(
            20, 20,
            lon_cycle=360, lat_cycle=None,
            lon_minmax=None, lat_minmax=(0, np.inf),
        ),
        grid_locator1=angle_helper.LocatorDMS(12),
        grid_locator2=grid_finder.MaxNLocator(5),
        tick_formatter1=angle_helper.FormatterDMS(),
    )
    ax = fig.add_subplot(
        rect, axes_class=axisartist.Axes, grid_helper=grid_helper,
        aspect=1, xlim=(-5, 12), ylim=(-5, 10))
    ax.axis[:].toggle(ticklabels=False)
    ax.grid(color=".9")
    return ax

플로팅 축 추가

플롯에 플로팅 축을 추가하는 두 개의 함수를 정의합니다. 첫 번째 함수 add_floating_axis1()theta = 30 레이블이 있는 플로팅 축을 플롯에 추가합니다. 두 번째 함수 add_floating_axis2()r = 6 레이블이 있는 플로팅 축을 플롯에 추가합니다.

def add_floating_axis1(ax):
    ax.axis["lat"] = axis = ax.new_floating_axis(0, 30)
    axis.label.set_text(r"$\theta = 30^{\circ}$")
    axis.label.set_visible(True)
    return axis

def add_floating_axis2(ax):
    ax.axis["lon"] = axis = ax.new_floating_axis(1, 6)
    axis.label.set_text(r"$r = 6$")
    axis.label.set_visible(True)
    return axis

축 방향 변경

이제 네 개의 서로 다른 플롯을 설정하기 위해 루프를 생성하고, 각 플롯에 네 개의 주요 방향으로 플로팅 축을 배치합니다. 루프 내에서 add_floating_axis1()add_floating_axis2()를 사용하여 플로팅 축을 추가하고, set_axis_direction()을 사용하여 축 방향을 설정합니다.

fig = plt.figure(figsize=(8, 4), layout="constrained")

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=241+i)
    axis = add_floating_axis1(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=245+i)
    axis = add_floating_axis2(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

plt.show()

플롯 보기

마지막으로, 플롯을 봅니다. 네 개의 주요 방향 각각에 플로팅 축이 있는 동일한 플롯을 볼 수 있습니다.

요약

이 랩에서는 set_axis_direction() 메서드를 사용하여 Matplotlib 플롯에서 축 방향을 변경하는 방법을 배웠습니다. 이 메서드를 사용하면 축의 방향을 상단, 하단, 왼쪽 또는 오른쪽의 네 가지 주요 방향 중 하나로 쉽게 변경할 수 있습니다.