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

Matplotlibのpyplot.plot()を使ってパラメトリック曲線を描画する方法

Pythonの可視化ライブラリMatplotlibでは、pyplot.plot()メソッドを利用することで、パラメータ方程式で定義された曲線(パラメトリック曲線)を簡単に描画できます。この記事では、極座標形式のパラメトリック曲線を2次元平面上にプロットする手順を、サンプルコードとともに解説します。

パラメトリック曲線を描画する手順

  • 図のサイズと余白の設定: plt.rcParamsを使用して、図のサイズやサブプロット間・周囲のパディングを調整します。
  • サンプル数Nの初期化: 曲線を構成するデータ点の数を表す変数Nを定義します。値が大きいほど滑らかな曲線になります。
  • NumPyによるデータ点の生成: パラメータt、半径r、および座標xyのデータ点をnumpyで作成します。
  • 図とサブプロットの作成: plt.subplots()でFigureオブジェクトとAxesオブジェクトを生成します。
  • plot()メソッドでプロット: xyのデータ点をplot()メソッドに渡して曲線を描画します。
  • 図の表示: 最後にshow()メソッドを呼び出して、グラフを画面に表示します。

サンプルコード

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

N = 400
t = np.linspace(0, 2 * np.pi, N)
r = 0.5 + np.cos(t)
x, y = r * np.cos(t), r * np.sin(t)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

コードの解説

このコードでは、パラメータtを0から2πまで400等分した値として生成し、半径r = 0.5 + cos(t)を計算しています。その後、x = r·cos(t)y = r·sin(t)という関係式からデカルト座標へ変換することで、カージオイド(ハート型に似た曲線)が描かれます。np.linspace()により得られた離散的なデータ点を順番に結ぶことで、滑らかな連続曲線として表示されます。

実行結果

上記のコードを実行すると、以下のようなパラメトリック曲線が表示されます。

Matplotlibのpyplot.plot()を使ってパラメトリック曲線を描画する方法

まとめ

パラメトリック曲線の描画は、パラメータtの範囲を定義し、x・y座標をそれぞれ計算してplot()に渡すだけというシンプルな流れです。rの式を変更すれば、リサージュ曲線や螺旋など、さまざまな形状の曲線を自由に試すことができます。ぜひ各式を変えて、独自の曲線描画に挑戦してみてください。

  1. Matplotlibで陰方程式をプロットすることは可能?等高線を使った描画方法

    Matplotlibには、陰方程式(implicit equation)を直接プロットする専用の機能は標準では用意されていません。しかし、等高線プロット(contour)を活用することで、陰方程式のグラフを簡単に描くことができます。この記事では、その具体的な手順とサンプルコードを紹介します。 陰方程式をプロットする手順 NumPyを使ってxrangeとyrangeのデータ点を作成します。 meshgrid()メソッドを使って、座標ベクトルから座標行列を生成します。 xとyから方程式を作成します。 contour()メソッドにx、y、方程式を渡して等高線を作成します。 show()メソッドで図

  2. Python Matplotlibで3Dグラフをプロットする方法を解説

    PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使