[matplotlib 3D] 6.2次元ヒストグラムの3D表示

matplotlib 3D

はじめに

2次元ヒストグラムの3D表示は、二次元平面上のデータ分布を立体的に可視化する手法です。通常のヒストグラムが1次元のデータ分布を表示するのに対し、2次元ヒストグラムは2つの変数の関係性と分布密度を同時に表現できます。ここでは、matplotlibのmplot3dの3Dグラフで2次元ヒストグラムを表示する方法について説明します。

コード

解説

モジュールのインポート

スタイルの適用

データとヒストグラムデータの生成

np.random.rand(2, 100) * 4 は、サイズが(2, 100)のランダムな0〜4の数値配列を生成します。x, y = とすることで、x、y それぞれが(1, 100)のサイズになります。

histogram2dでは、x、yにヒストグラム化したいデータを入力し、binsで分割数、rangeで範囲を設定します。この例では範囲が0-4、binsが4なので、ヒストグラムの区切り(xedges, yedges)はそれぞれ array([0., 1., 2., 3., 4.]) となります。

ヒストグラムの表示位置の設定

xposは棒グラフを表示する位置を設定します。xedges[:-1]は配列の最後の要素を除いた[0, 1, 2, 3]となります。indexing=’ij’を指定すると、グリッドの順序が行列形式になります。[1]

.ravel()は2次元配列を1次元に変換する関数です。ヒストグラムを表示するbar3d関数が2次元配列に対応していないため、この変換が必要になります。

zpos = 0は、z座標の0の位置から棒グラフを描画することを意味します。

dx、dyはそれぞれx軸方向とy軸方向における各棒の幅を表します。[2]

dzは棒グラフの高さを表します。この高さの値はhistogram2dで得られたhistデータであり、1次元配列に変換して使用します。

2次元ヒストグラムの表示

bar3dはx,y,zの位置、x,yの幅とzの高さを設定することで表示できます。

dx,dyを変化させた場合

binsを変化させた場合

dx=dy=0.25として、meshgridの+0.25 を+0.125としました。

zsortを変化させた場合

zsortをかえることで棒の重なり具合が変化します。

回転アニメーション

作製した図を回転させると以下のようになります。

回転アニメーションは以下の記事を参考にして作成しました。

[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlibのmplot3dを使用して3Dグラフの回転アニメーションを作成する方法を解説します。動画として保存する手順や回転角度の制御など、3Dビジュアライゼーションを動的に表現するための基本テクニックを紹介します。
コードをダウンロード(.pyファイル)

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

まとめ

2次元ヒストグラムの3D表示は、複雑なデータ分布を直感的に理解するための強力なツールです。matplotlibのmplot3dモジュールを使うことで、Pythonで簡単に実装できます。データの特性に合わせてカスタマイズすることで、より効果的なデータ分析と洞察が得られるでしょう。

参考

配列の要素から格子列を生成するnumpy.meshgrid関数の使い方
NumPyの関数であるnp.meshgridはmatplotlibでグラフを描画する際、格子点を作りたいときや組み合わせを生成したいときに便利な機能です。本記事では、np.meshgridの使い方について解説しました。

コメント