matplotlib

【matplotlib】等高線プロットの描画方法 ~ contour, contourf ~

【matplotlib】等高線プロットの描画方法 _ contour, contourf _

Pythonによるデータ分析をする際にグラフなどの可視化でよく利用されるmatplotlibで等高線プロットを描画する方法について解説します。

等高線プロットによる描画方法

matplotlibで等高線をプロットする際のメソッドとしてはcontour, contourfといったメソッドがあります。それぞれの使い方を以降で解説します。

contourによる等高線プロット

等高線をプロットするcontourメソッドは以下の例のように使用します。

import numpy as np
import matplotlib.pyplot as plt

# データグリッドの生成
x = np.linspace(-10, 10, 50)
y = np.linspace(-10, 10, 50)
X, Y = np.meshgrid(x, y)

# データ点の生成
Z = np.sin(X) + np.cos(Y)

# 等高線プロットの表示
plt.contour(X, Y, Z, 20, cmap='RdGy')
plt.colorbar()

plt.show()
matplotlib contour 等高線

データとしては、X, Y, Zが必要です。X, Yについては描画のためのグリッドで、numpyにnp.meshgridという便利なメソッドがあります。以下のようにx, yをnp.linspace等間隔のデータを作成し、np.meshgrid(x, y)とすることで、グリッドを作成することができます。

# データグリッドの生成
x = np.linspace(-10, 10, 50)
y = np.linspace(-10, 10, 50)
X, Y = np.meshgrid(x, y)

Zは、Z = f(X, Y)で表されるように各グリッドの点に対する値を表します。fは任意の関数と思ってもらえばよいです。今回の例では、適当に以下のような式でZの値を生成しています。

# データ点の生成
Z = np.sin(X) + np.cos(Y)

等高線プロットを表示するには、用意したX, Y, Zをcontourメソッドに渡します。第4引数に渡しているのは等高線の数に該当する値で、この値を大きくすると等高線の間隔が短い等高線のプロットが生成できます。

Note

coutourの公式ドキュメントの記載はこちらを参照してください。

カラーマップは、公式ドキュメントのこちらのページ中段にコードとマップ例があるので参考にしてください。

contourfによる間隔を埋めた等高線プロット

contourは等高線を表示するメソッドでしたが等高線の間隔を埋めた等高線プロットをする場合には、countourfメソッドを使用します。

import numpy as np
import matplotlib.pyplot as plt

# データグリッドの生成
x = np.linspace(-10, 10, 50)
y = np.linspace(-10, 10, 50)
X, Y = np.meshgrid(x, y)

# データ点の生成
Z = np.sin(X) + np.cos(Y)

# 等高線プロットの表示
plt.contourf(X, Y, Z, 20, cmap='RdGy')
plt.colorbar()

plt.show()
matplotlib contourf 等高線

使用方法は、countorと同じですが、結果の画像を見てみると等高線間が保管されて色の濃淡で分かりやすくなっていることが分かります。

Note

contourfの公式ドキュメントの記載はこちらを参照してください。

cmapに指定する値としては、公式ドキュメントのこちらのページ中段にコードとマップ例があるので参考にしてください。

NumPy, pandas, matplotlib, scikit-learnといったデータ分析関連パッケージについて体系的に習得したい場合は「Pythonデータサイエンスハンドブック」が大変おすすめです。
matplotlibに関する使い方も豊富に掲載されていますので手元に置いておくと便利です。是非購入を検討してみてください。