Plotting Module
SymPy の Plotting Module をインポートすると、Matplotlib をバックエンドで使って 2Dグラフや 3Dグラフを表示させることができます。数値データを使わずに、SymPy のシンボル(記号)で表された数式をそのままグラフとして視覚化できるのが特徴です。
Matplotlib はバックエンドで動くので、特にFigure の設定を直接変更するのでなければ、sympy をインポートするだけでグラフを描画することができます。2Dグラフを描くためには sympy.plotting.plot() を呼び出す必要がありますが、簡略して sympy.plot() と記述することもできます。例として ガウス関数 $y=\exp(-x^2)$ のグラフを $-5\leq x\leq 5$ の範囲で描いてみます。
# SYMPY_PLOTTING_MODULE_01
# In[1]
import sympy
# 記号xを定義
sympy.var('x')
# y = exp(x)
y = sympy.exp(-x**2)
# グラフ設定
# x軸の範囲:[-5, 5], y軸ラベル:'y'
p1 = sympy.plot(y, (x, -5, 5), ylabel = "y")
$\sin x$ と $\cos x$ のグラフを重ねて表示するコードです。
# In[2]
# 円周率
pi = sympy.pi
# f=sinx, g=cosx
f = sympy.sin(x)
g = sympy.cos(x)
# sinxとcosxを重ねて描画
p = sympy.plot(f, g, (x, -10, 10), legend = True, show = False)
# gの線の色をredに変更
p[1].line_color = "red"
# Figureを表示
p.show()
plot_parametric() を使うと媒介変数(パラメータ)表示された関数のグラフを描くことができます。以下のサンプルコードでは媒介変数方程式
\[x=\cos t,\quad y=\sin t\]
を使って円を描きます。Figureサイズを変更するので、matplotlib.pyplot 本体もインポートしておきます。
# SYMPY_PLOTTING_MODULE_02
# In[1]
import matplotlib.pyplot as plt
# Figureサイズを6×6に設定
plt.rcParams['figure.figsize'] = 6, 6
# sympyから必要な関数をインポート
from sympy import cos, sin, var
# sympy.plottingから媒介変数プロット関数をインポート
from sympy.plotting import plot_parametric
# 記号を定義
var('t')
# 円の媒介変数(パラメータ)方程式
x = cos(t)
y = sin(t)
# tを-5から5まで動かして円を描画
p = plot_parametric(x, y, (t, -5, 5))
新品価格 | ![]() |

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング 新品価格 | ![]() |

カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス) 新品価格 | ![]() |

plot3d() は 3次元データを視覚化するための関数です。
サンプルコードは楕円放物面 $z=x^2+y^2$ のグラフを表示します。
# SYMPY_PLOTTING_MODULE_03
# In[1]
# matplotlib.pyplotをインポート
import matplotlib.pyplot as plt
# Figureサイズを8×8に設定
plt.rcParams['figure.figsize'] = 8, 8
# sympyから必要な関数をインポート
from sympy import var
# sympy.plottingから3D描画関数をインポート
from sympy.plotting import plot3d
# 記号を定義
var('x y')
# 楕円放物面の方程式
z = x**2 + y**2
# 楕円放物面を描画
p = plot3d(z, (x, -5, 5), (y, -5, 5))
plot3d_parametric_surface() はパラメータで表された曲面の方程式を可視化する関数です。下のサンプルコードではパラメータ方程式
\[x=\sin u\cos v,\quad y=\sin u\sin v,\quad z=\cos u\]
を使って球面を表示させます。
# SYMPY_PLOTTING_MODULE_04
# In[1]
# matplotlib.pyplotをインポート
import matplotlib.pyplot as plt
# Figureサイズを8×8に設定
plt.rcParams['figure.figsize'] = 8, 8
# sympyから必要な関数をインポート
from sympy import var, cos, sin
# plot3d_parametric_surface()をppsという名前でインポート
from sympy.plotting import plot3d_parametric_surface as pps
# 記号を定義
var('u v')
# 球面方程式のパラメータ表示
x = sin(u) * cos(v)
y = sin(u) * sin(v)
z = cos(u)
# 球面を描画
p = pps(x, y, z, (u, 0, 8), (v, 0, 8))
コメントを書く