matplotlibで等高線図を書く
schwefel.png:
- ax.contour(x, y, z, zdir=
, offset=<平面のどの位置に描画するか>)
- contour関数のオプション(一部)
- zdir: どの平面に投射するか(x, y, zのいずれか)
- offset: 平面のどの位置に描画するか
- cmap: カラーマップ
#!/usr/bin/env python #coding:utf-8 from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm import matplotlib.pyplot as plt import numpy as np def schwefel(x, y): return 418.9829 * 2 - (x * np.sin(np.sqrt(abs(x))) + \ y * np.sin(np.sqrt(abs(y)))) def work(): N = 100 MIN_X = -500 MAX_X = 500 x = np.linspace(MIN_X, MAX_X, N) y = np.linspace(MIN_X, MAX_X, N) x, y = np.meshgrid(x, y) z = schwefel(x, y) fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection="3d") ax.contour(x, y, z, zdir='z', offset=0, cmap=cm.coolwarm) ax.contour(x, y, z, zdir='x', offset=MIN_X, cmap=cm.coolwarm) ax.contour(x, y, z, zdir='y', offset=MAX_X, cmap=cm.coolwarm) ax.set_title("Schwefel") fig.savefig("schwefel.png", bbox_inches="tight") if __name__ == "__main__": work()