2017-08-11 267 views
4

如何使用Sympy绘制以下3D曲线(作为示例)?我知道只是为t创建一个数组,然后在Matplotlib中执行此操作,但我并不想绘制此曲线的,而是学习如何以符号方式定义和绘制曲线。使用Sympy在3D中绘制曲线

α(T)=(cos(t)的,罪(T),T)

from sympy import * 

t = symbols('t') 
alpha = [cos(t), sin(t), t] 

# now what? 

我已经使用各种方式的情节方法尝试,但此仅导致在任一三条单独的1D曲线或错误。

+0

研究这个http://docs.sympy.org/latest/modules/plotting.html。 – swatchai

回答

6
之间的接口

您必须使用中的方法,你的情况你需要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) 

plot3d_parametric_line(cos(t), sin(t), t, (t, 0, 2*pi))如果你喜欢集T的限制。

enter image description here 寻找更多的例子在3D绘图与sympy:第一https://github.com/sympy/sympy/blob/master/examples/beginner/plot_examples.py

2

我从来没有试图在sympy

)ploting我怀疑更将有matplotlib经验

lambdify(是象征性的表达和正常功能

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() 

enter image description here