Matplotlib による 3D キバープロット

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python Matplotlibを使って3Dキバープロットを作成する方法を学びます。キバープロットは、矢印でベクトル場を表示します。矢印はベクトルの方向を指し、その長さはベクトルの大きさを表します。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) matplotlib(("Matplotlib")) -.-> matplotlib/SpecializedPlotsGroup(["Specialized Plots"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") python/BasicConceptsGroup -.-> python/booleans("Booleans") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") matplotlib/SpecializedPlotsGroup -.-> matplotlib/quiver_plots("Quiver Plots") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} matplotlib/figures_axes -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} python/booleans -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} python/tuples -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} python/importing_modules -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} matplotlib/quiver_plots -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} python/numerical_computing -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} python/data_visualization -.-> lab-48895{{"Matplotlib による 3D キバープロット"}} end

ライブラリのインポートとプロットの設定

最初のステップは、必要なライブラリをインポートしてプロットを設定することです。この例では、3Dプロットを作成するためにMatplotlibのpyplotモジュールとその3dツールキットを使用します。

import matplotlib.pyplot as plt
import numpy as np

ax = plt.figure().add_subplot(projection='3d')

グリッドを作成する

次に、ベクトル場を表示するための点のグリッドを作成します。この例では、NumPyのmeshgrid関数を使って点のメッシュグリッドを作成します。arange関数は、指定された区間内で等間隔に配置された点の配列を作成するために使用されます。

x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2),
                      np.arange(-0.8, 1, 0.2),
                      np.arange(-0.8, 1, 0.8))

矢印の方向を定義する

次に、矢印の方向を定義します。この例では、NumPyの三角関数を使って矢印の方向を定義します。sin関数とcos関数は、xyz方向の矢印の方向を表すuvw配列を作成するために使用されます。

u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z)
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z)
w = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) *
     np.sin(np.pi * z))

キバープロットを作成する

矢印のグリッドと方向が定義されたので、キバープロットを作成できます。この例では、Matplotlibのquiver関数を使ってプロットを作成します。lengthパラメータは矢印の長さを設定し、normalizeパラメータは矢印を長さ1に正規化します。

ax.quiver(x, y, z, u, v, w, length=0.1, normalize=True)

プロットを表示する

最後に、Matplotlibのshow関数を使ってプロットを表示します。

plt.show()

まとめ

この実験では、PythonのMatplotlibを使って3Dキバープロットを作成する方法を学びました。meshgrid関数を使って点のグリッドを作成し、NumPyの三角関数を使って矢印の方向を定義しました。その後、quiver関数を使ってプロットを作成し、show関数を使って表示しました。