How to plot the following 3D curve (as an example) using Sympy? I know just create an array for t and do this in Matplotlib, but I don't really want to plot this curve, rather to learn how to define and plot curves symbolically.
alpha(t) = (cos(t), sin(t), t)
from sympy import *
t = symbols('t')
alpha = [cos(t), sin(t), t]
# now what?
I have tried using the plot method in various ways but this has only resulted in either three separate 1D curves, or an error.
You have to use methods from sympy.plotting
, in your case your need plot3d_parametric_line
:
from sympy import *
from sympy.plotting import plot3d_parametric_line
t = symbols('t')
alpha = [cos(t), sin(t), t]
plot3d_parametric_line(*alpha)
or plot3d_parametric_line(cos(t), sin(t), t, (t, 0, 2*pi))
if you like to set limits of t.
Look for more examples to plot in 3d with sympy: https://github.com/sympy/sympy/blob/master/examples/beginner/plot_examples.py
I never tried ploting in sympy
I suspect more will have matplotlib experience
lambdify() is the interface between symbolic expressions and regular functions
from sympy import *
from sympy.utilities.lambdify import lambdify
import math
t = symbols('t')
alpha = [cos(t), sin(t), t]
f = lambdify(t, alpha)
T = [2*math.pi/100*n for n in range(100)]
F = [f(x) for x in T]
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
fig1, ax1 = plt.subplots(subplot_kw=dict(projection='3d'))
ax1.plot(*zip(*F))
ax1.set_aspect('equal')
plt.show()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With