目次
概要
contourf()
で塗りつぶした等高線を描画する方法について紹介します。
matplotlib.pyplot.contourf
matplotlib.pyplot.contourf(*args, data=None, **kwargs)
引数
名前 | 型 | デフォルト値 |
---|---|---|
X, Y | array-like | |
x, y 座標 | ||
Z | array-like (N, M) | |
z 座標 | ||
levels | int or array-like | |
等高線の数または等高線を引く位置 |
返り値
名前 | 説明 |
---|---|
QuadContourSet | 描画したものを表すオブジェクト |
X, Y, Z の指定方法
- X, Y:
xy
座標を表す (N, M) の2次元配列 - Z: 各座標に対応する値をそれぞれ (N, M) の2次元配列
In [1]:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
def f(x, y):
return x ** 2 + y ** 2 + x * y
X, Y = np.mgrid[-3:3:100j, -3:3:100j]
Z = f(X, Y)
fig = plt.figure(figsize=(9, 4))
# 等高線を作成する。
ax1 = fig.add_subplot(121)
ax1.set_title("contour")
ax1.contourf(X, Y, Z)
# 3D グラフを作成する。
ax2 = fig.add_subplot(122, projection="3d")
ax2.set_title("surface")
ax2.plot_surface(X, Y, Z)
plt.show()
- X:
x
座標を表す (N,) の1次元配列 - Y:
y
座標を表す (M,) の1次元配列 - Z: 各座標に対応する値をそれぞれ (N, M) の2次元配列
In [2]:
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig = plt.figure(figsize=(9, 4))
# 等高線を作成する。
ax1 = fig.add_subplot(121)
ax1.set_title("contour")
ax1.contourf(x, y, Z)
# 3D グラフを作成する。
ax2 = fig.add_subplot(122, projection="3d")
ax2.set_title("surface")
ax2.plot_surface(X, Y, Z)
plt.show()
levels – 等高線の間隔を指定する
levels
引数で等高線の間隔を指定できます。
整数を指定した場合は、描画範囲を levels 段階に分けるように等高線を作成します。
In [3]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.contourf(X, Y, Z, levels=5)
plt.show()
リストを指定した場合、Z
がその値をとる点を結ぶように等高線を作成します。
In [4]:
# f(x, y) = 0, 5, 10, 15, 30 となる等高線を作成する。
fig, ax = plt.subplots(figsize=(5, 5))
ax.contourf(X, Y, Z, levels=[0, 5, 10, 15, 30])
plt.show()
colors – 色を指定する
リストを指定した場合、内側から順に指定した色が使用されます。
In [5]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.contourf(X, Y, Z, levels=5, colors=["red", "blue", "green", "pink", "yellow"])
plt.show()
カラーマップを指定する
cmap
引数で値に応じて色を変化させるカラーマップを設定できます。
In [6]:
fig, ax = plt.subplots(figsize=(6, 6))
ax.contourf(X, Y, Z, levels=5, cmap="magma")
plt.show()
alpha – 透過度を設定する
alpha
引数に $[0, 1]$ の範囲の浮動小数点数を指定することで透過度を設定できます。
In [7]:
fig, ax = plt.subplots(figsize=(6, 6))
ax.contourf(X, Y, Z, alpha=0.8)
plt.show()
hatches – ハッチを設定する
In [8]:
fig, ax = plt.subplots(figsize=(5, 5))
ax.contourf(X, Y, Z, colors="w", hatches=["o", "///", "o", "///", "o"])
plt.show()
コメント