Matplotlib 화살표 가이드

Beginner

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

소개

화살표는 종종 플롯에 주석을 달 때 사용됩니다. 이 튜토리얼에서는 플롯의 데이터 제한이 변경될 때 다르게 동작하는 화살표를 그리는 방법을 보여줍니다.

VM 팁

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

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

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

표시 공간에서 고정된 머리 모양, 데이터 공간에서 고정된 앵커 포인트

이는 플롯에 주석을 달 때 유용하며, 플롯을 이동하거나 크기를 조정할 때 화살표의 모양이나 위치가 변경되지 않도록 하려는 경우에 적합합니다.

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

x_tail = 0.1
y_tail = 0.5
x_head = 0.9
y_head = 0.8
dx = x_head - x_tail
dy = y_head - y_tail

fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
                                 mutation_scale=100)
axs[0].add_patch(arrow)

arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
                                 mutation_scale=100)
axs[1].add_patch(arrow)
axs[1].set(xlim=(0, 2), ylim=(0, 2))

plt.show()

표시 공간에서 고정된 머리 모양 및 앵커 포인트

이는 플롯에 주석을 달 때 유용하며, 플롯을 이동하거나 크기를 조정할 때 화살표의 모양이나 위치가 변경되지 않도록 하려는 경우에 적합합니다.

fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
                                 mutation_scale=100,
                                 transform=axs[0].transAxes)
axs[0].add_patch(arrow)

arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (x_head, y_head),
                                 mutation_scale=100,
                                 transform=axs[1].transAxes)
axs[1].add_patch(arrow)
axs[1].set(xlim=(0, 2), ylim=(0, 2))

plt.show()

전체 패치 (patch) 를 데이터 공간에서 고정

fig, axs = plt.subplots(nrows=2)

arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[0].add_patch(arrow)

arrow = mpatches.FancyArrow(x_tail, y_tail - .4, dx, dy,
                            width=.1, length_includes_head=True, color="C1")
axs[0].add_patch(arrow)

axs[0].arrow(x_tail + 1, y_tail - .4, dx, dy,
             width=.1, length_includes_head=True, color="C2")

arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[1].add_patch(arrow)

arrow = mpatches.FancyArrow(x_tail, y_tail - .4, dx, dy,
                            width=.1, length_includes_head=True, color="C1")
axs[1].add_patch(arrow)

axs[1].arrow(x_tail + 1, y_tail - .4, dx, dy,
             width=.1, length_includes_head=True, color="C2")
axs[1].set(xlim=(0, 2), ylim=(0, 2))

plt.show()

요약

이 튜토리얼에서는 플롯의 데이터 제한이 변경될 때 다르게 동작하는 화살표를 그리는 방법을 보여주었습니다. 머리 또는 앵커 포인트가 데이터 공간 또는 표시 공간에서 고정되어야 하는지에 따라 화살표를 그리는 세 가지 사용 사례를 다루었습니다. 이러한 사용 사례는 플롯에 주석을 달고 플롯을 이동하거나 크기를 조정하더라도 화살표가 올바른 위치에 유지되도록 하는 데 유용할 수 있습니다.