[matplotlib 3D] 4.塗りつぶし3D等高線

matplotlib 3D

はじめに

本記事では、matplotlibを使用した塗りつぶし3次元等高線(contourf)の作成方法について解説します。3次元データの視覚化において、等高線は値の分布を直感的に理解するのに役立ちます。この記事では、必要なライブラリの導入、基本的な等高線の作成方法、そして複数の投影面を使った高度な表現方法まで、段階的に説明していきます。実践的なコード例と詳細な解説を通じて、データ分析やシミュレーション結果の効果的な可視化方法を学ぶことができます。

塗りつぶし等高線

コード

解説

このコードは、matplotlibを使用して3D塗りつぶし等高線グラフを作成するものです。以下に行ごとの解説をします:

  • 図の作成: 6×6インチの大きさの図を作成し、3D投影を設定しています。
  • データの生成:
    • 0.02間隔で-4.0から4.02までの範囲の配列を作成
    • meshgridを使って2次元のX, Y座標グリッドを生成
    • 3つのガウス関数(Z1, Z2, Z3)を定義し、それらを組み合わせてZ値を計算
  • 等高線プロット: ax.contourf()で塗りつぶし等高線を描画しています。levels=20で等高線の数を20に設定し、カラーマップにはgist_earthを使用しています。
  • プロットの表示範囲設定:
    • X軸とY軸の範囲をそれぞれのデータの最小値から最大値に設定
    • Z軸はZ値の絶対値の最大値を使って対称的な範囲(-max〜+max)に設定
  • 保存と表示: 図を’contourf3d.jpg’として120dpiの解像度で保存した後、画面に表示します。

このコードの特徴は、複数のガウス関数を組み合わせて作成した複雑な3D表面を等高線として視覚化している点です。gist_earthカラーマップを使用することで、地形図のような表現になっています。

[matplotlib 3D] 3.等高線プロット
3次元グラフ上に等高線、塗りつぶし等高線をプロットする例について説明する。

3D surface plot +転写

コード

解説

3D表面プロット

  • ax.plot_surface()を使って3D表面をプロット
  • 透明度を0.4に設定し、カラーマップにはcm.gist_earthを使用
  • 軸の範囲を設定:
    • X軸とY軸はデータの最小値から最大値に設定
    • Z軸はZ値の絶対値の最大値を使用して対称的な範囲(-max〜+max)に設定

3方向の等高線プロット

  • 底面(z平面)に等高線を表示:zdir=’z’, offset=-abs(Z).max()
  • 左側面(x平面)に等高線を表示:zdir=’x’, offset=X.min()
  • 奥側面(y平面)に等高線を表示:zdir=’y’, offset=Y.max()
  • これらの等高線にはcm.cividisカラーマップを使用

グラフの保存と表示

  • 完成したグラフを’contourf3d_tensha.jpg’として120dpiの解像度で保存
  • plt.show()でグラフを画面に表示

このコードの特徴は、3次元表面プロットと等高線プロットを組み合わせて、データを複数の視点から同時に表現している点です。特に、三つのガウス関数を組み合わせた複雑な形状を、表面と3方向の平面投影を用いて視覚的に理解しやすく表現しています。

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

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

参考

Filled contours — Matplotlib 3.10.5 documentation
Project filled contour onto a graph — Matplotlib 3.10.5 documentation

コメント