はじめに
matplotlib mplot3dの3Dグラフで3つのデータの関係性をsurface plotで可視化する方法について解説する。また、欠損値があるときの対処方法についても説明する。
コード
解説
モジュールのインポート
データの生成
データとしてx, yがあって各(x, y)にデータZがあると仮定する。データZの形状はx ✕ yとなる。
3Dsurface plotを表示するにはx,y の形状をZと合わす必要があるのでnp.meshgridですべてのデータの形状を揃える。
3D surface plotの表示
ax.plot_surface(X, Y, Z)でsurface plotを表示できる。
また、ax.plot(X.ravel(),Y.ravel(),Z.ravel(),’ro’)とすることでデータポイントを赤点で示している。
ax.set(xlabel=’x’, ylabel=’y’, zlabel=’z’)でラベル名を設定する。
ax.set_xlabel()のようにしても設定できるが、ax.set()とするとまとめて設定できる。
データに欠損値がある場合
欠損したデータの生成
X, Y, Zと同様にA, B, Cを生成し、ランダムなインデックスを10こ選んで、np.nanとする。
A=A[~np.isnan(A)]でnanの部分を除外した配列を得る。
3D surface plotの表示
plot_trisurfで3D surface plotを表示できる。plot_trisurfではplot_surfaceと異なり1次元化データでsurface plotを表示できる。
回転アニメーション
作製した図を回転させると以下のようになる。
回転アニメーションは以下の記事を参考にして作成した。
[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlib mplot3d のグラフの回転アニメーション
コメント