Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのMatplotlibで球の表面に点をプロットする方法

Pythonで球の表面に点をプロットしたい場合、Matplotlibのplot_surface()メソッドを利用すると簡単に実現できます。この記事では、3D球面を描画し、その上にデータポイントを表示する手順を具体的なコード例とともに解説します。

実装の手順

  • figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。

  • add_subplot()メソッドにprojection='3d'を指定して、3D投影のサブプロットを追加します。

  • 球の半径を表す変数rを初期化します。

  • NumPyを使用して、球面上のtheta(θ)の値と、x・y・z各軸のデータポイントを算出します。

  • plot_surface()メソッドで球面を描画します。

  • show()メソッドを呼び出して、図を表示します。

コード例

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
r = 0.05
u, v = np.mgrid[0:2 * np.pi:30j, 0:np.pi:20j]
x = np.cos(u) * np.sin(v)
y = np.sin(u) * np.sin(v)
z = np.cos(v)
ax.plot_surface(x, y, z, cmap=plt.cm.YlGnBu_r)
plt.show()

コードのポイント

  • np.mgrid[0:2*np.pi:30j, 0:np.pi:20j]: 方位角u(0〜2π)を30分割、極角v(0〜π)を20分割したメッシュグリッドを生成します。分割数を増やすと、より滑らかな球面になります。

  • 球面座標の変換式: x = cos(u)×sin(v)、y = sin(u)×sin(v)、z = cos(v)という三角関数の組み合わせにより、単位球の表面上の座標を計算しています。

  • cmap=plt.cm.YlGnBu_r: カラーマップを指定することで、z値に応じて表面にグラデーションが適用され、立体感がわかりやすくなります。お好みに応じて「viridis」や「coolwarm」など他のカラーマップも試してみてください。

実行結果

上記のコードを実行すると、黄緑から青へのグラデーションがかかった3D球面が表示されます。PythonのMatplotlibで球の表面に点をプロットする方法

まとめ

Matplotlibのplot_surface()メソッドとNumPyのメッシュグリッドを組み合わせれば、わずか十数行のコードで美しい3D球面を描画できます。球面座標系のパラメータ(方位角u・極角v)の範囲や分割数を調整することで、部分的な球面や高精細な曲面など、さまざまなバリエーションにも対応可能です。データ可視化や物理シミュレーションの基礎として、ぜひ活用してみてください。

  1. PythonのMatplotlibにおけるプロットの階層構造をわかりやすく解説

    Matplotlibは、NumPyを基盤として構築されたPythonのデータ可視化ライブラリです。グラフやチャートを作成する際に最も広く使われているライブラリの一つですが、その内部は「木構造(ツリー構造)」のような階層的なオブジェクト構造を持っています。各プロットは、この階層内のオブジェクトによって構成されています。 Matplotlibの階層構造の全体像 Matplotlibの構造を理解するうえで、最上位から順に「Figure」「Axes」「Axis」などのオブジェクトがどのように関係しているかを把握することが重要です。以下、それぞれの役割を詳しく見ていきましょう。 Figure(フィギュア

  2. Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック

    Pythonでは、matplotlibライブラリを使用することで、簡単にグラフを作成できます。matplotlibには多数のパッケージと関数が用意されており、さまざまな種類のグラフやプロットを生成できます。また、使い方も非常にシンプルです。NumPyなどのPython組み込み関数と組み合わせることで、データ可視化の目的を効率的に達成できます。この記事では、matplotlibで描画できる代表的なグラフの種類とその実装方法を、サンプルコード付きで紹介します。シンプルなグラフの描き方まずは基本的なグラフの描画方法です。ここでは数学関数を使ってX座標とY座標を生成し、その関数をmatplotlibで