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