불규칙 데이터 그리드 등고선 플로팅

Beginner

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

소개

이 랩에서는 Matplotlib 을 사용하여 불규칙하게 배치된 데이터의 등고선 플롯을 Python 으로 생성하는 방법을 보여줍니다. 등고선 플롯은 등고선 또는 등고선을 사용하여 데이터 값의 2D 분포를 보여줍니다. 이 예제에서는 정규 그리드에서 보간된 불규칙하게 배치된 데이터의 등고선 플롯과 비정형 삼각 그리드의 삼각 등고선 플롯을 비교합니다.

VM 팁

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

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

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

필요한 라이브러리 가져오기

이 예제에 필요한 라이브러리인 matplotlib.pyplotnumpy를 가져오는 것으로 시작합니다. 또한 데이터의 삼각 측량 (triangulation) 을 위해 matplotlib.tri를 가져옵니다.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.tri as tri

임의 데이터 생성

NumPy 의 np.random.uniform 메서드를 사용하여 임의 데이터를 생성합니다. -2 와 2 사이의 x 및 y 값을 갖는 npts = 200개의 데이터 포인트를 생성합니다. 또한 함수 z = x * np.exp(-x**2 - y**2)를 사용하여 z 값을 계산합니다.

np.random.seed(19680801)
npts = 200
x = np.random.uniform(-2, 2, npts)
y = np.random.uniform(-2, 2, npts)
z = x * np.exp(-x**2 - y**2)

그리드 (grid) 에서의 보간

불규칙하게 배치된 데이터 좌표의 등고선 플롯 (contour plot) 을 그리드 (grid) 에서의 보간을 통해 생성합니다. 먼저 np.linspace를 사용하여 x 및 y 에 대한 그리드 값을 생성합니다. 그런 다음 tri.LinearTriInterpolator를 사용하여 (xi, yi) 로 정의된 그리드에서 데이터 (x, y) 를 선형 보간합니다. 일반적인 axes.Axes.contour를 사용하여 보간된 데이터를 플롯합니다.

ngridx = 100
ngridy = 200
xi = np.linspace(-2.1, 2.1, ngridx)
yi = np.linspace(-2.1, 2.1, ngridy)

triang = tri.Triangulation(x, y)
interpolator = tri.LinearTriInterpolator(triang, z)
Xi, Yi = np.meshgrid(xi, yi)
zi = interpolator(Xi, Yi)

fig, ax1 = plt.subplots()
cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap="RdBu_r")
ax1.plot(x, y, 'ko', ms=3)
ax1.set(xlim=(-2, 2), ylim=(-2, 2))
ax1.set_title('Contour Plot of Irregularly Spaced Data Interpolated on a Grid')
fig.colorbar(cntr1, ax=ax1)
plt.show()

Tricontour

axes.Axes.tricontour에 정렬되지 않은 불규칙하게 배치된 좌표를 직접 제공하여 동일한 데이터를 tricontour 플롯으로 플롯합니다.

fig, ax2 = plt.subplots()
cntr2 = ax2.tricontourf(x, y, z, levels=14, cmap="RdBu_r")
ax2.plot(x, y, 'ko', ms=3)
ax2.set(xlim=(-2, 2), ylim=(-2, 2))
ax2.set_title('Tricontour Plot of Irregularly Spaced Data')
fig.colorbar(cntr2, ax=ax2)
plt.show()

요약

이 랩에서는 Matplotlib 을 사용하여 Python 에서 불규칙하게 배치된 데이터의 등고선 플롯을 생성하는 방법을 시연했습니다. 정규 그리드 (regular grid) 에서 보간된 불규칙하게 배치된 데이터의 등고선 플롯과 비구조적 삼각 그리드 (unstructured triangular grid) 에 대한 tricontour 플롯을 비교했습니다. axes.Axes.contouraxes.Axes.tricontour 메서드를 사용하여 등고선 플롯을 생성했습니다.