はじめに
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次元配列を受け付けないため1次元化する。
zpos = 0はz=0から棒を生やす意味となる。
dx,dyは各方向における各棒の幅となる。[2]
dzは高さに該当。高さはhistgram2dで得た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 のグラフの回転アニメーション
参考
配列の要素から格子列を生成するnumpy.meshgrid関数の使い方
NumPyの関数であるnp.meshgridはmatplotlibでグラフを描画する際、格子点を作りたいときや組み合わせを生成したいときに便利な機能です。本記事では、np.meshgridの使い方について解説しました。
コメント