はじめに
matplotlibで作成した等高線グラフの色、線の設定などについて、その詳細について説明する。
解説
モジュールのインポート
データの生成
X, Y は xとyをnp.meshgrid(x, y)により、格子状にしたデータであり、3次元データをプロットする場合はmeshgridデータを用いる必要がある。Z はそのX,Yを用いて、関数f(X, Y)で作成した。
等高線のプロット

ax.contour(X,Y,Z)で等高線が表示される。
負の値は破線、正の値は実線で表示される。
ax.set_aspect(‘equal’,’box’)でxとy軸のアスペクト比を同じにして、図の形状を四角にしている。
等高線のレベルの指定とcmapの利用

Zの後の10はレベルの設定であり、データを等高線により10個に分けるというの意味。
cmapを指定することで、色を使って等高線を表現することができる。
cmap=’PuOr’の場合、Pu(紫)が正の値。Or(オレンジ)が負の値となる。
等高線のレベルの配列による設定

levelを配列による指定することで、配列がそのままレベルに適用される。ここでは、linspaceを用いて配列を作成している。
等高線の線種の設定

linestylesを設定することで線種を変更できる。ここでは、’dashed’とすることで破線としている。
等高線の線幅の設定

linewidthsを設定することで線の太さを変更できる。ここでは、5とすることで太線としている。
等高線のラベルの設定

ax.clabel()を設定することで等高線に値のラベルを表示できる。inline=Trueとすることで線上にラベルを表示できる。
塗りつぶし等高線

plt.contourf()で塗りつぶし等高線が作成できる。
透明な塗りつぶし等高線

alphaを0から1の範囲で変化させることで塗りつぶし等高線の透明度を調整できる。
imshow()によるデータの表示

離散的なデータの場合、等高線は不向きのため、imshowを用いる必要がある。
imshowを用いる場合は、extent()でデータを表示する範囲を設定する。 これは、[xmin, xmax, ymin, ymax]の順となっている。
imshowのデフォルトの原点は左上なので、origin=’lower’で原点を左下に持ってくる。
imshow()に等高線を重ねて表示

contourとimshowを重ねて表示することもできる。
コメント