等高線の描画
x と y のデータを numpy.meshgrid() に渡すと、xy平面上の格子点 (X, Y) を作成してくれます。1つ1つの格子点 X, Y について高度 Z を与えると、(X, Y, Z) の 3 次元データが完成するので、これをもとに等高線を描くことができます。
matplotlib.axes.Axes.contour()
(X, Y, Z) を matplotlib.axes.Axes.contour()に渡すと等高線を描くことができます。
$Z = X^2+Y^2$ の等高線を描いてみましょう。
# PYTHON_MATPLOTLIB_CONTOUR_01
import numpy as np
import matplotlib.pyplot as plt
# Figureを作成
fig = plt.figure(figsize = (5, 5))
# FigureにAxesを追加
ax = fig.add_subplot(111)
# 軸ラベルを設定
ax.set_xlabel("x", size = 14)
ax.set_ylabel("y", size = 14)
# 軸の範囲を設定
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)
# 分割数
n = 128
# 範囲-5~5をn分割して(x,y)データを作成
x = np.linspace(-5, 5, n)
y = np.linspace(-5, 5, n)
# 格子点の作成
X, Y = np.meshgrid(x, y)
# 高度の計算式
Z = X**2 + Y**2
# 等高線を描く高度
h = [2, 6, 10, 14, 18]
# 等高線をプロット(カラーマップはhsv)
ct = ax.contour(X, Y, Z, cmap = "hsv", levels = h)
# 等高線ラベルを設定
ax.clabel(ct, fontsize = 12)
contour() の cmap にカラーマップを渡すことができます(指定しなくても自動で色が選択されます)。等高線の本数と間隔は levels に高度のリストを渡して調整します。一般には高度の間隔は一定にしておくことで、等高線が密なところは勾配が急であることがわかります。等高線ラベルは Axes.clabel() で表示します。このメソッドの第 1 引数には Axesオブジェクト(等高線)を渡します。
linestyles で "solid", "dashed", "dashdot", "dotted" の中から線の種類を選択することもできます。
新品価格 | ![]() |

新品価格 | ![]() |

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習 新品価格 | ![]() |

matplotlib.axes.Axes.pcolormesh()
matplotlib.axes.Axes.pcolormesh() を使うとカラーマップで色分けされた等高線を描くことができます。
# PYTHON_MATPLOTLIB_CONTOUR_02
import numpy as np
import matplotlib.pyplot as plt
# 8×6サイズのFigureを追加
fig = plt.figure(figsize = (8, 6))
# FigureにAxesを追加
ax = fig.add_subplot(111)
# 軸ラベルを設定
ax.set_xlabel("x", size = 14)
ax.set_ylabel("y", size = 14)
# 軸の範囲を設定
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 5)
# 分割数
n = 128
# 範囲-5~5をn分割して(x,y)データを作成
x = np.linspace(-5, 5, n)
y = np.linspace(-5, 5, n)
# 格子点の作成
X, Y = np.meshgrid(x, y)
# 高度の計算式
Z = X**2 + Y**2
# 等高線をプロット(カラーマップはBlues)
im = ax.pcolormesh(X, Y, Z, cmap = "Blues")
# カラーバーを表示
fig.colorbar(im)
最後の行で colorbar()メソッドを使って右横にカラーバーを表示させています。
このメソッドの引数には Axesオブジェクトを渡します。
コメントを書く