3次元グラフ

3次元グラフ

3次元グラフ化*するためのPythonコードを提供します。

この例では、方程式として$ z = \sin(\sqrt{x^2 + y^2}) $を使用します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 3Dグラフを作成するためのデータ生成
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 3Dプロット
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='viridis')

# 軸ラベルの追加
ax.set_xlabel('X軸')
ax.set_ylabel('Y軸')
ax.set_zlabel('Z軸')

# グラフの表示
plt.show()

この例では、numpyを使用して$ (x) $および$ (y) $の値を生成し、それに基づいて$ (z) $を計算しています。

matplotlibライブラリplot_surface メソッドを使用して、3Dグラフを描画しています。

方程式やプロットのカスタマイズは必要に応じて変更できます。

[実行結果]

ソースコード解説

以下はソースコードの詳しい説明です。

  1. NumPyとMatplotlibのインポート:
    1
    2
    3
    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
  • numpyは数値計算用のライブラリで、このコードでは数値データを生成するために使用されます。
  • matplotlib.pyplotはグラフ描画用のライブラリで、Axes3Dは3Dグラフを描画するための特殊な軸クラスです。
  1. データの生成:
    1
    2
    3
    4
    x = np.linspace(-5, 5, 100)
    y = np.linspace(-5, 5, 100)
    x, y = np.meshgrid(x, y)
    z = np.sin(np.sqrt(x**2 + y**2))
  • np.linspace(-5, 5, 100)は、$-5$から$5$の範囲を$100$個の等間隔な点で生成します。
  • np.meshgrid(x, y)は、これらの1次元配列を基に2次元グリッドを生成します。
  • z = np.sin(np.sqrt(x**2 + y**2))は、与えられた$ (x) $および$ (y) $に対して、$ z = \sin(\sqrt{x^2 + y^2}) $の値を計算します。
  1. 3Dプロットの作成:
    1
    2
    3
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.plot_surface(x, y, z, cmap='viridis')
  • plt.figure()で新しい図を作成し、add_subplot(111, projection='3d')で3Dのサブプロットを作成します。
  • ax.plot_surface(x, y, z, cmap='viridis')は、3D曲面を描画します。
    cmapカラーマップを指定します。
  1. 軸ラベルの追加:
    1
    2
    3
    ax.set_xlabel('X軸')
    ax.set_ylabel('Y軸')
    ax.set_zlabel('Z軸')
  • ax.set_xlabelax.set_ylabelax.set_zlabelで、それぞれX軸、Y軸、Z軸にラベルを追加します。
  1. グラフの表示:
    1
    plt.show()
  • plt.show()でグラフを表示します。

このコードは、$ z = \sin(\sqrt{x^2 + y^2}) $の関数を用いて3Dグラフを作成し、その可視化を行っています。

グラフ解説

[実行結果]

上記のグラフは、方程式$ z = \sin(\sqrt{x^2 + y^2}) $をグラフ化したものです。

  • $ (x) $および$ (y) $の値は、それぞれ -5 から 5 までの範囲で、100 の等間隔な点で生成されています。
  • numpy.meshgrid を使用して、これらの$ (x) $および$ (y) $の値からグリッドを形成しています。
  • 方程式に基づいて、各$ (x, y) $の組み合わせに対する$ (z) $の値を計算しています。
    この場合、$ z = \sin(\sqrt{x^2 + y^2}) $です。
  • 3Dプロットでは、matplotlibplot_surface メソッドを使用して、計算された$ (x, y, z) $の値に基づいて曲面を描画しています。
  • 軸ラベル(X軸、Y軸、Z軸)が追加されています。

このグラフは、曲面が$ z = \sin(\sqrt{x^2 + y^2}) $の形状になっており、$ (x) $と$ (y) $の変動に応じて波打つような特徴があります。

視覚的には、中心から外側に向かって波の振動が広がっていくような形状が確認できます。