Matplotlib 를 이용한 효율적인 선 플로팅

Beginner

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

소개

이 튜토리얼에서는 Matplotlib 의 LineCollection 함수를 사용하여 여러 줄을 한 번에 효율적으로 그리는 방법을 배웁니다. 서로 다른 색상과 스타일로 여러 줄을 플롯하는 방법과 마스크된 배열을 사용하여 일부 값을 마스킹하는 방법을 살펴보겠습니다. 또한 ScalarMappable.set_array 함수를 사용하여 값 배열을 색상에 매핑하는 방법도 배웁니다.

VM 팁

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

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

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

라이브러리 임포트

시작하기 전에 필요한 라이브러리를 임포트해야 합니다. matplotlib.pyplotnumpy를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

데이터 생성

다음으로, 선을 플롯하는 데 사용할 데이터를 생성해야 합니다. numpy를 사용하여 xy 값의 2D 배열을 생성합니다.

x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]

Line Collection 생성

이제 LineCollection 함수를 사용하여 LineCollection 객체를 생성할 수 있습니다. 선의 모양을 사용자 정의하기 위해 linewidths, colors, 및 linestyle 매개변수를 설정할 수 있습니다.

colors = plt.rcParams['axes.prop_cycle'].by_key()['color']

segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x

segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)

line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
                               colors=colors, linestyle='solid')

플롯 생성

이제 matplotlib를 사용하여 플롯을 생성하고, Axes 객체의 add_collection 메서드를 사용하여 LineCollection 객체를 플롯에 추가할 수 있습니다.

fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())

ax.add_collection(line_segments)
ax.set_title('Masked arrays 를 사용한 Line collection')
plt.show()

값을 색상에 매핑

ScalarMappable.set_array 함수를 사용하여 값의 배열을 색상에 매핑할 수도 있습니다. 새로운 데이터 세트와 array 매개변수를 x 값으로 설정한 새로운 LineCollection 객체를 생성합니다. 그런 다음 Figure 객체의 colorbar 메서드를 사용하여 플롯에 colorbar 를 추가할 수 있습니다.

N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]

fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))

line_segments = LineCollection(segs, array=x,
                               linewidths=(0.5, 1, 1.5, 2),
                               linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('매핑된 색상을 사용한 Line Collection')
plt.sci(line_segments)
plt.show()

요약

이 튜토리얼에서는 Matplotlib 에서 LineCollection 함수를 사용하여 여러 줄을 한 번에 효율적으로 그리는 방법을 배웠습니다. 다양한 색상과 스타일로 여러 줄을 플로팅하는 방법과 마스크된 배열을 사용하여 일부 값을 마스킹하는 방법을 살펴보았습니다. 또한 ScalarMappable.set_array 함수를 사용하여 값의 배열을 색상에 매핑하는 방법도 배웠습니다.