はじめに
このチュートリアルでは、Matplotlib ライブラリを使って QuadMesh プロットを作成する方法を説明します。QuadMesh は、pcolor 関数の高速化版ですが、いくつかの制限があります。このチュートリアルのデモでは、マスクされたデータにおける QuadMesh のバグを示します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み完了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリのインポート
import numpy as np
from matplotlib import pyplot as plt
データの定義
n = 12
x = np.linspace(-1.5, 1.5, n)
y = np.linspace(-1.5, 1.5, n * 2)
X, Y = np.meshgrid(x, y)
Qx = np.cos(Y) - np.cos(X)
Qz = np.sin(Y) + np.sin(X)
Z = np.sqrt(X**2 + Y**2) / 5
Z = (Z - Z.min()) / (Z.max() - Z.min())
Zm = np.ma.masked_where(np.abs(Qz) < 0.5 * np.max(Qz), Z)
プロットの作成
fig, axs = plt.subplots(nrows=1, ncols=3)
axs[0].pcolormesh(Qx, Qz, Z, shading='gouraud')
axs[0].set_title('Without masked values')
cmap = plt.colormaps[plt.rcParams['image.cmap']].with_extremes(bad='y')
axs[1].pcolormesh(Qx, Qz, Zm, shading='gouraud', cmap=cmap)
axs[1].set_title('With masked values')
axs[2].pcolormesh(Qx, Qz, Zm, shading='gouraud')
axs[2].set_title('With masked values')
fig.tight_layout()
plt.show()
解説
- ステップ 2:データは numpy 配列を使って定義されます。X と Y の配列はメッシュグリッドを作成するために使われ、それが Qx と Qz の値の計算に使われます。その後、Z の値は Qx と Qz の値に基づいて計算されます。Zm 配列は、Qz の絶対値が Qz の最大値の 0.5 倍未満の場合の値をマスクすることで作成されます。
- ステップ 3:subplots メソッドを使って 3 つのサブプロット付きの図を作成します。pcolormesh 関数を使って各サブプロットに QuadMesh プロットを作成します。最初のサブプロットはマスクされていない値のプロットを表示します。2 番目のサブプロットはマスクされた値とマスク領域が黄色になるカスタムカラーマップ付きのプロットを表示します。3 番目のサブプロットはマスクされた値とマスク領域が透明になる既定のカラーマップ付きのプロットを表示します。
- ステップ 4:QuadMesh プロットは 2 次元データを可視化するための便利なツールです。このチュートリアルでは、pcolormesh 関数を使って QuadMesh プロットを作成する方法と、プロット内のマスクされたデータを処理する方法を学びました。
まとめ
このチュートリアルでは、Matplotlib ライブラリを使って QuadMesh プロットを作成する手順を紹介しました。プロット内のマスクされたデータの扱い方と、マスク領域のカラーマップのカスタマイズ方法を学びました。QuadMesh プロットは 2 次元データを可視化する強力なツールであり、特に科学的なアプリケーションに役立ちます。