Python Sympy Lambdify在mayavi中获得二维方程的三维绘图

Python Sympy Lambdify在mayavi中获得二维方程的三维绘图,python,sympy,mayavi,Python,Sympy,Mayavi,尽管expr是x和y的函数,但我希望foo在z也发生变化时生成3d数据。当我尝试使用mayavi绘制foo时,绘制的是一条直线而不是一个平面 我确信这是sympy的lamdify的结果,因为foo的维度是(100100,1)当expr是x+y时,我想问题是expr只有两个变量,因此您无法获得所需的3d数组。 因此,sympy的sympify函数不会简化表达式(或给定的字符串)。因此,如果没有'z'术语,可以将“(z+1)**2-z*z-2*z-1”(或者一些简单的表达式,使z术语不会被抵消)添加

尽管
expr
x
y
的函数,但我希望
foo
在z也发生变化时生成3d数据。当我尝试使用mayavi绘制
foo
时,绘制的是一条直线而不是一个平面


我确信这是sympy的
lamdify
的结果,因为
foo
的维度是
(100100,1)
expr
x+y

时,我想问题是
expr
只有两个变量,因此您无法获得所需的3d数组。 因此,sympy的sympify函数不会简化表达式(或给定的字符串)。因此,如果没有
'z'
术语,可以将
“(z+1)**2-z*z-2*z-1”
(或者一些简单的表达式,使z术语不会被抵消)添加到
stru exp

这样,sympify将返回一个带有z的表达式

  str_exp="x+y"
  expr = sympify((str_expr))
  X,Y,Z=np.ogrid[x_start:x_end:no_x_points , y_start:y_end:no_y_points , z_start:z_end:no_z_points]
  f = lambdify((x,y,z), expr)
  foo=f(X,Y,Z)

是的,这会管用的。但我正在寻找一种更优雅的方法,指导Symphy根据给定的参数(变量)数量给出具有正确维度的结果。
>>str_expr="x+y+(z+1)**2 - z*z - 2*z - 1"
>>sympify((str_expr))
x + y - z**2 - 2*z + (z + 1)**2 - 1