[matplotlib] 129. 3Dプロットでfill_between関数を使用する方法

matplotlib

はじめに

データの可視化において、3Dプロットは情報を立体的に表現する強力なツールです。特に、空間内の領域を塗りつぶすことで、データの関係性や傾向をより直感的に理解できるようになります。今回は、Matplotlibの3D機能を使って、二つの曲線間の空間を塗りつぶす方法を詳しく解説します。

2次元グラフではfill_between関数を使って二つの曲線間の領域を簡単に塗りつぶせますが、3D空間では少し工夫が必要です。Matplotlibの3D機能では、パラメトリックに定義された曲線間の空間を塗りつぶすことができます。

コード&解説

モジュールのインポート

バージョン

データの生成

  • データの準備: θ(theta)パラメータを0から2πまで100点生成し、これを使って2つの3D曲線のx, y, z座標を計算しています。
  • 2種類の曲線:
    • 内側の曲線(x1, y1, z1): 正弦波変調を加えた円形で、z座標は固定値2
    • 外側の曲線(x2, y2, z2): 単純な円形で、z座標が波状に変化

実際の使用例

  • 3Dプロット生成: fig.add_subplot(projection='3d')で3D表示環境を作成
  • fill_between関数: このコードの核心部分で、ax.fill_between(x1, y1, z1, x2, y2, z2,...)を使用して2つの3D曲線間の空間をサーモン色で塗りつぶし、黒い線で縁取りしています。
  • 見た目の調整: 軸ラベル、タイトルの設定、視点の調整(30度の仰角、45度の方位角)、そしてtight_layout()でレイアウトを最適化
  • 保存と表示: 最終的なプロットを「3d_fill_between.png」として保存し、画面に表示

まとめ

Matplotlibの3D機能とfill_between関数を組み合わせることで、立体的でインパクトのある可視化が可能になります。特に科学データや数学的概念の表現に非常に効果的です。ぜひ上記のコードを実行して、パラメータを変更しながら様々な形状を作ってみてください。

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

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

参考資料

Fill between 3D lines — Matplotlib 3.10.6 documentation

コメント