はじめに
pcolor, pcolormesh, pcolorfast, imshowなどを用いて疑似カラーマップを作成する方法について説明する。
コード
解説
モジュールのインポート
データの生成
xとyはnp.meshgridによりデータを生成した。x,yはそれぞれnp.arange()でdx, dy刻みのデータを生成しているので、dx,dyを小さくすることで解像度を上げることができる。z は関数 f(x, y)で生成した。
x,yの値は境界の値で、zはその境界内部のデータになるため、zのデータ数を1つ削減する必要がある。
z_min, z_maxはカラーマップの表示範囲を設定する必要があるので -np.abs(z).max()と np.abs(z).max()でそれぞれ求めている。
図の生成
plt.subplots(2, 2,figsize=(8,6))で2行2列の図を作成。
左上の図(pcolor)
c = ax.pcolor(x, y, z, cmap=’GnBu’, vmin=z_min, vmax=z_max)でカラーマップを表示することができる。cmapは色の設定で、vmin,vmaxでカラーマップの表示範囲を設定している。
fig.colorbar(c, ax=ax)でカラーバーを表示できる。
右上の図(pcolormesh)
pcolormeshはpcolorよりも描写が速いカラーマップである。pcolor同様、c = ax.pcolormesh(x, y, z, cmap=’GnBu’, vmin=z_min, vmax=z_max)とすることでカラーマップを表示できる。
左下の図(imshow)
imshow()でもカラーマップを表示することができる。imshowをpcolorなどと同じように表示したい場合には、extentをx,yデータに合わせることと、originをlowerにすることが必要である。
右下の図(pcolorfast)
pcolorfastはpcolormeshよりも高速なカラーマップ表示方法であり、pcolor, pcolormeshと同様のカラーマップを得ることができる。
境界線の表示
pcolormeshはpcolorよりも速いことが売りだが、境界線の表示では不具合がある。
pcolorfastは境界線の表示ができない。
描写速度の比較
最も速いのがimshowでその後に、pcolormesh, pcolor, pcolorfastの順となっている。これは低解像度であるためだと考えられる。
本来は、pcolorfast, pcolormesh, pcolor, imshowの順であると思い、解像度を上げて描写した結果、下のように、pcolorfastのほうが、pcolormeshよりも速くなった。
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
コメント