Matplotlib 等高線図

Salman Mehmood 2024年2月15日
  1. contour() メソッドを使用して Matplotlib で等高線図を取得する
  2. Matplotlib で contourf() メソッドを使用する
Matplotlib 等高線図

このデモでは、等高線図とは何か、Matplotlib の contour() メソッドを使用して等高線図を取得する方法を説明します。

contour() メソッドを使用して Matplotlib で等高線図を取得する

等高線図には、2 次元平面上に 3 次元サーフェスを表示する方法があります。 2つの予測変数 xy を y 軸に、応答変数 z を等高線としてグラフ化します。

2 次元の等高線図は、2つの変数に依存するスカラー フィールドの等値線です。 各軸の変数を離散化しましょう。

numpy.linspace() を使用して作成できる離散化された x コンポーネントから始めます。次に、numpy をインポートします。

x-2 から 2 まで直線的に間隔を空け、500 の値にしたいと考えています。 y についても同様に行います。

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)

np.meshgrid() メソッド を使用して 2 次元メッシュを作成できます。これは大文字の x と大文字の y で保存されます。 次に、x の sin と y の cos を使用してスカラー フィールドを評価できます。

x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

等高線図は、contour() メソッドを使用して作成され、3つのパラメーターを受け入れます。 関数の等値線とカラー キーが表示されます。

この位置のスカラー フィールドの値については、plot.colorbar() を使用してカラー スケールを有効にし、どの値が特定の色で示されているかに関する情報を取得できます。

plot.contour(x, y, z)
plot.colorbar()

完全なソース コード:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contour(x, y, z)
plot.colorbar()
plot.show()

出力:

等高線メソッドを使用して等高線プロットを取得

Matplotlib で contourf() メソッドを使用する

contourf() と呼ばれる別のメソッドは等高線図を作成しますが、中間領域は対応する色の値で塗りつぶされます。

コード:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contourf(x, y, z)
plot.colorbar()
plot.show()

出力:

matplotlibでcontourf()メソッドを使用

levels 引数を使用して、レベル数を変更できます。 levels はアイソラインの数です。

たとえば、30 のアイソラインを作成して、トランジションがよりスムーズになることを確認してみましょう。 たとえば、vmin を -1 に、vmax を 0.5 に設定して、どの値からどの値まで等値線にするかを手動で選択することもできます。

次のコードを実行すると、値が高すぎるため、黄色の領域を等値線で覆うことができません。

コード:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contourf(x, y, z, levels=30, vmin=-1, vmax=0.5)
plot.colorbar()
plot.show()

出力:

レベル数を変更し、アイソラインを持つ値を手動で選択

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Matplotlib Plot