[matplotlib 3D] 1. 二次元データを三次元空間にプロット

matplotlib 3D

はじめに

matplotlibの3次元プロットについて、デモデータ(mplot3d Examples)を使って解説をする。最初は、2次元データを三次元空間にプロットする例について説明する。

コード

解説

モジュールのインポート

figの生成

figのaxにprojection=’3d’を適用することで3Dグラフが作れる。

Cos波のプロット

xsはnp.linspace(0, 1, 100)で0から1の100個の配列とする。
ysはサインカーブとする。np.piは円周率πとなる。

ax.plot(xs, ys, zs=0, zdir=’z’)でz=0のxy座標にプロットすることができる。

散布図のプロット

colorsの’g’は緑, ‘c’はシアン, ‘k’は黒, ‘m’はマゼンタとなる。
10 * len(colors)で10×colorsの長さ(=4)の計40個のランダムデータを生成する。

空のclistにcolorsの色を10個ずつ追加していく。colorsは4種なので40個(‘g’を10個,’c’を10個, ‘k’を10個, ‘m’を10個の順)のリストができあがる。

ax.scatterのc=c_listで各点の色を指定している。zdirで固定化する軸を選び、zsで固定化する軸の値を選ぶ。

凡例、軸範囲と軸ラベルの設定

ax.legend()でplotの際に設定したlabelを凡例として表示することができる。

zdirを変化させたときの図の変化

左の図は、zs=0,zdir=’x’でx=0のyz軸にプロットしている。
中央の図は、zs=1, zdir=’y’でy=1のxz軸にプロットしている。
右の図は、zs=0,zdir=’z’でz=0のxy軸にプロットしている。

視点の変更(azim)

プロットを見やすくするため、視点を変化させることができる。
azimを低下させると反時計回りに回転する。

視点の変更(elev)

elevを増加させると、上からの視点になる。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

https://matplotlib.org/examples/mplot3d/2dcollections3d_demo.html

コメント