不規則データグリッド等高線プロット

Beginner

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

はじめに

この実験(Lab)では、Matplotlib を使用して、Python で不規則に配置されたデータの等高線プロットを作成する方法を説明します。等高線プロットは、等高線または等高線を使用して、データの 2D 分布を示します。この例では、規則的なグリッド上で補間された不規則に配置されたデータの等高線プロットと、非構造化三角形グリッドの tricontour プロットを比較します。

VM のヒント

VM の起動が完了したら、左上隅をクリックして Notebook タブに切り替え、Jupyter Notebook にアクセスして練習してください。

Jupyter Notebook の読み込みが完了するまで、数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題が発生した場合は、Labby にお気軽にお尋ねください。セッション後にフィードバックを提供していただければ、問題を迅速に解決いたします。

必要なライブラリのインポート

この例に必要なライブラリ、matplotlib.pyplotnumpy をインポートすることから始めます。さらに、データの三角測量のために 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)

グリッド上での補間

グリッド上での補間を介して、不規則に配置されたデータ座標の等高線プロットを作成します。まず、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 で不規則に配置されたデータの等高線プロットを作成する方法を示しました。規則的なグリッド上で補間された不規則に配置されたデータの等高線プロットと、非構造化三角形グリッドの tricontour プロットを比較しました。等高線プロットの作成には、axes.Axes.contour メソッドと axes.Axes.tricontour メソッドが使用されました。