はじめに
この実験(Lab)では、Matplotlib を使用して、Python で不規則に配置されたデータの等高線プロットを作成する方法を説明します。等高線プロットは、等高線または等高線を使用して、データの 2D 分布を示します。この例では、規則的なグリッド上で補間された不規則に配置されたデータの等高線プロットと、非構造化三角形グリッドの tricontour プロットを比較します。
VM のヒント
VM の起動が完了したら、左上隅をクリックして Notebook タブに切り替え、Jupyter Notebook にアクセスして練習してください。
Jupyter Notebook の読み込みが完了するまで、数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題が発生した場合は、Labby にお気軽にお尋ねください。セッション後にフィードバックを提供していただければ、問題を迅速に解決いたします。
必要なライブラリのインポート
この例に必要なライブラリ、matplotlib.pyplot と numpy をインポートすることから始めます。さらに、データの三角測量のために 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 メソッドが使用されました。