matplotlibで等高線を書く その2
schwefel.png:
- CS = ax.contour(x, y, z, <等高線の領域数>)
- 等高線図をプロット
- ax.clabel(CS)
- 各等高線に値を記入
- contour関数のオプション (一部)
- cmap: カラーマップ
- clabel関数のオプション (一部)
- fontsize: フォントの大きさ
- inline: True なら、値の周りの等高線を消す (デフォルトはTrue)
- colors: 値の色を設定 (何も設定しない場合、等高線と同じ色となる)
#!/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) CS = ax.contour(x, y, z, 5, cmap=cm.coolwarm) ax.clabel(CS, fontsize=9, inline=False, colors="black") ax.set_title("Schwefel") fig.savefig("schwefel.png", bbox_inches="tight") if __name__ == "__main__": work()