#はじめに
matplotlibのpcolor, imshow, contourメソッドを用いて等高線図を作成する。
追記:
2017年8月28日: pcolormeshとcontourをミックスした内容(4)を追加した。
内容
(1) $z=sin(x)+cos(y)$を考え,それを[0,x,10], [0,y,10]の範囲でpcolorで描画する。
pcolormeshを使っている。pcolor()よりも高速である。
(2) impshowを使った描画例
(3) contorを使った等高線図
(4) pcolormeshとcontourをミックスした図
#例(1): pcolormeshの利用
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y) # 表示する計算式の指定。等高線はZに対して作られる。
plt.pcolormesh(X, Y, Z, cmap='hsv') # 等高線図の生成。cmapで色付けの規則を指定する。
#plt.pcolor(X, Y, Z, cmap='hsv') # 等高線図の生成。cmapで色付けの規則を指定する。
pp=plt.colorbar (orientation="vertical") # カラーバーの表示
pp.set_label("Label", fontname="Arial", fontsize=24) #カラーバーのラベル
plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)
plt.show()
#例(2): impshowの利用
二次元配列をササッと可視化したい場合はmatplotlib.pyplot.imshow()を使うと良い。
import numpy as np
import matplotlib.pyplot as plt
z=np.zeros([100,100])
for i in range(100):
for j in range(100):
z[i,j] = i+j
plt.imshow(z)
plt.colorbar () # カラーバーの表示
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
#例(3) contourを使った等高線図
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y) # 表示する計算式の指定。等高線はZに対して作られる。
# 等高線図の生成。
cont=plt.contour(X,Y,Z, 5, Vmax=1,colors=['black'])
cont.clabel(fmt='%1.1f', fontsize=14)
pp=plt.colorbar (orientation="vertical") # カラーバーの表示
pp.set_label("Label", fontname="Arial", fontsize=24) #カラーバーのラベル
plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)
plt.show()
#例(4)pcolormeshとcontourのミックス
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y) # 表示する計算式の指定。等高線はZに対して作られる。
# 等高線図の生成。
cont=plt.contour(X,Y,Z, 5, vmin=-1,vmax=1, colors=['black'])
cont.clabel(fmt='%1.1f', fontsize=14)
plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)
plt.pcolormesh(X,Y,Z, cmap='cool') #カラー等高線図
pp=plt.colorbar (orientation="vertical") # カラーバーの表示
pp.set_label("Label", fontsize=24)
plt.show()
#結果(4): pcolormeshとcontourのミックス
##[補遺]
カラーマップ指定のcmapでパターンを指定する。パターンは数十種類用意されている。ここにサンプルが掲載されている:
'prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern',
'gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg', 'hsv',
'gist_rainbow', 'rainbow', 'jet', 'nipy_spectral', 'gist_ncar'