Matplotlib 等高線図
このデモでは、等高線図とは何か、Matplotlib の contour()
メソッドを使用して等高線図を取得する方法を説明します。
contour()
メソッドを使用して Matplotlib で等高線図を取得する
等高線図には、2 次元平面上に 3 次元サーフェスを表示する方法があります。 2つの予測変数 x
と y
を 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()
出力:
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()
出力:
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