Matplotlib 그리기 순서 조정

Beginner

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

소개

이 튜토리얼에서는 Matplotlib 에서 아티스트의 그리기 순서와 zorder 속성을 사용하여 순서를 조정하는 방법에 대해 배우겠습니다. 또한 개별 아티스트의 순서를 변경하는 방법과 다양한 유형의 아티스트에 대한 zorder의 기본값도 살펴보겠습니다.

VM 팁

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

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

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

Zorder 이해하기

Matplotlib 의 zorder 속성은 아티스트의 그리기 순서를 결정하는 부동 소수점 숫자입니다. zorder가 높은 아티스트는 zorder가 낮은 아티스트 위에 그려집니다. zorder의 기본값은 아티스트의 유형에 따라 다릅니다. 예를 들어, 이미지는 기본 zorder가 0 이고, 패치는 기본 zorder가 1 입니다.

Zorder 변경하기

아티스트의 그리기 순서를 변경하려면 아티스트를 생성할 때 zorder 매개변수를 사용하여 zorder 속성을 명시적으로 설정할 수 있습니다. 예를 들어, 산점도에서 점의 zorder를 선의 zorder보다 높은 값으로 설정하여 점을 선 위에 표시할 수 있습니다.

import matplotlib.pyplot as plt
import numpy as np

r = np.linspace(0.3, 1, 30)
theta = np.linspace(0, 4*np.pi, 30)
x = r * np.sin(theta)
y = r * np.cos(theta)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))

ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')

ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5)  ## move dots on top of line
ax2.set_title('Dots on top of lines')

plt.tight_layout()
plt.show()

눈금 및 격자선에 대한 Zorder 설정

set_axisbelow() 메서드 또는 axes.axisbelow 매개변수를 사용하여 눈금 및 격자선의 zorder를 설정할 수 있습니다.

ax = plt.axes()
ax.plot([1, 2, 3], [2, 4, 3])
ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

요소의 사용자 정의 순서

또한 요소의 zorder를 사용자 정의 순서로 설정할 수 있습니다. 예를 들어, 범례의 zorder를 두 선 사이에 설정할 수 있습니다.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2)  ## bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3',  zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5)  ## legend between blue and orange line
plt.show()

요약

이 튜토리얼에서는 Matplotlib 의 zorder 속성과 아티스트 (artists) 의 그리기 순서를 변경하는 방법에 대해 배웠습니다. 또한 눈금 및 격자선에 대한 zorder를 설정하고 요소의 사용자 정의 순서를 만드는 방법을 살펴보았습니다. zorder를 이해하는 것은 겹치는 요소가 있는 복잡한 시각화를 만들 때 필수적입니다.