Matplotlib Collection 을 이용한 시각화

Beginner

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

소개

이 튜토리얼은 Matplotlib 컬렉션을 사용하여 시각화를 생성하는 과정을 안내합니다. 이 튜토리얼에서는 LineCollection, PolyCollection 및 RegularPolyCollection 을 사용하는 방법을 보여줍니다. 또한, 나선형의 위치를 설정하기 위해 LineCollection 및 PolyCollection 의 offsets 및 offset_transform 키워드 인수를 사용하는 방법도 보여줍니다. 이 튜토리얼에서는 RegularPolyCollection 을 사용하여 정다각형을 만드는 방법도 보여줍니다.

VM 팁

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

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

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

필요한 라이브러리 임포트

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import collections, transforms

첫 번째 단계는 필요한 라이브러리를 임포트하는 것입니다. 이 튜토리얼에서는 Matplotlib 와 Numpy 를 사용합니다.

나선형 생성

nverts = 50
npts = 100

## Make some spirals
r = np.arange(nverts)
theta = np.linspace(0, 2*np.pi, nverts)
xx = r * np.sin(theta)
yy = r * np.cos(theta)
spiral = np.column_stack([xx, yy])

다음 단계는 Numpy 를 사용하여 나선형을 생성하는 것입니다. sin 및 cos 함수를 사용하여 나선형을 생성합니다.

오프셋 생성

## Fixing random state for reproducibility
rs = np.random.RandomState(19680801)

## Make some offsets
xyo = rs.randn(npts, 2)

세 번째 단계는 Numpy 를 사용하여 오프셋을 생성하는 것입니다. random 함수를 사용하여 오프셋을 생성합니다.

오프셋을 사용하여 LineCollection 생성

col = collections.LineCollection(
    [spiral], offsets=xyo, offset_transform=ax1.transData)
trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
col.set_transform(trans)
col.set_color(colors)

ax1.add_collection(col, autolim=True)
ax1.autoscale_view()

ax1.set_title('LineCollection using offsets')

네 번째 단계는 오프셋을 사용하여 LineCollection 을 생성하는 것입니다. LineCollection 을 사용하여 오프셋이 있는 곡선을 생성합니다. 또한 offset_transform 을 사용하여 곡선의 위치를 설정합니다.

오프셋을 사용하여 PolyCollection 생성

col = collections.PolyCollection(
    [spiral], offsets=xyo, offset_transform=ax2.transData)
trans = transforms.Affine2D().scale(fig.dpi/72.0)
col.set_transform(trans)
col.set_color(colors)

ax2.add_collection(col, autolim=True)
ax2.autoscale_view()

ax2.set_title('PolyCollection using offsets')

다섯 번째 단계는 오프셋을 사용하여 PolyCollection 을 생성하는 것입니다. PolyCollection 을 사용하여 곡선을 색상으로 채웁니다. 또한 offset_transform 을 사용하여 곡선의 위치를 설정합니다.

오프셋을 사용하여 RegularPolyCollection 생성

col = collections.RegularPolyCollection(
    7, sizes=np.abs(xx) * 10.0, offsets=xyo, offset_transform=ax3.transData)
trans = transforms.Affine2D().scale(fig.dpi / 72.0)
col.set_transform(trans)
col.set_color(colors)

ax3.add_collection(col, autolim=True)
ax3.autoscale_view()

ax3.set_title('RegularPolyCollection using offsets')

여섯 번째 단계는 오프셋을 사용하여 RegularPolyCollection 을 생성하는 것입니다. RegularPolyCollection 을 사용하여 오프셋이 있는 정다각형을 생성합니다. 또한 offset_transform 을 사용하여 다각형의 위치를 설정합니다.

연속적인 데이터 오프셋 생성

## Simulate a series of ocean current profiles, successively
## offset by 0.1 m/s so that they form what is sometimes called
## a "waterfall" plot or a "stagger" plot.

nverts = 60
ncurves = 20
offs = (0.1, 0.0)

yy = np.linspace(0, 2*np.pi, nverts)
ym = np.max(yy)
xx = (0.2 + (ym - yy) / ym) ** 2 * np.cos(yy - 0.4) * 0.5
segs = []
for i in range(ncurves):
    xxx = xx + 0.02*rs.randn(nverts)
    curve = np.column_stack([xxx, yy * 100])
    segs.append(curve)

col = collections.LineCollection(segs, offsets=offs)
ax4.add_collection(col, autolim=True)
col.set_color(colors)
ax4.autoscale_view()

ax4.set_title('Successive data offsets')
ax4.set_xlabel('Zonal velocity component (m/s)')
ax4.set_ylabel('Depth (m)')
ax4.set_ylim(ax4.get_ylim()[::-1])

일곱 번째 단계는 연속적인 데이터 오프셋을 생성하는 것입니다. LineCollection 을 사용하여 연속적인 오프셋이 있는 곡선을 생성합니다.

요약

이 튜토리얼에서는 Matplotlib collection 을 사용하여 시각화를 만드는 방법을 보여드렸습니다. LineCollection, PolyCollection 및 RegularPolyCollection 을 사용하여 곡선과 다각형을 만드는 방법을 배웠습니다. 또한 LineCollection 및 PolyCollection 의 offsets 및 offset_transform 키워드 인수를 사용하여 나선의 위치를 설정하는 방법도 배웠습니다.