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

matplotlib 3D

はじめに

この記事では、matplotlib の mplot3d モジュールを使用して3つのデータの関係性を3Dサーフェスプロット(surface plot)で可視化する方法について解説します。3次元データの視覚化は複雑なデータパターンや傾向を理解するのに役立ちます。また、データに欠損値がある場合の対処法についても説明していきます。

コード

解説

モジュールのインポート

データの生成

データとしてx, yがあり、各座標(x, y)に対応するデータZがあると仮定します。データZの形状はx × yとなります。3D surface plotを表示するためには、x, yの形状をZと合わせる必要があるため、np.meshgridを使用してすべてのデータの形状を揃えます。

3D surface plotの表示

ax.plot_surface(X, Y, Z)を使用してサーフェスプロットを表示できます。
データポイントを視覚化するには、ax.plot(X.ravel(), Y.ravel(), Z.ravel(), ‘ro’)と記述することで赤い点として表示できます。また、軸ラベルはax.set(xlabel=’x’, ylabel=’y’, zlabel=’z’)で設定できます。
個別に設定する方法(ax.set_xlabel()など)もありますが、ax.set()を使うとラベルをまとめて効率的に設定できます。とするとまとめて設定できる。

データに欠損値がある場合

欠損したデータの生成

A, B, Cをそれぞれ X, Y, Zと同様に生成し、ランダムに選んだ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ファイル)

参考

コメント