[matplotlib 3D] 55. 3つのデータの関係性を3D surface plotで可視化

matplotlib 3D

はじめに

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 のグラフの回転アニメーション
コードをダウンロード(.pyファイル)

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

参考

コメント