Python 在Mayavi中使用quiver3d()绘制三维矢量场

Python 在Mayavi中使用quiver3d()绘制三维矢量场,python,plot,sympy,mayavi,Python,Plot,Sympy,Mayavi,我很难弄明白为什么以下代码在Jupyter笔记本中不起作用!非常感谢您的帮助 %gui qt import matplotlib.pyplot as plt import numpy as np from sympy import symbols from mayavi import mlab x,y,z = symbols('x y z') def gradient(f): return (f.diff(x), f.diff(y),f.diff(z)) f = x*y**2+z**

我很难弄明白为什么以下代码在Jupyter笔记本中不起作用!非常感谢您的帮助

%gui qt
import matplotlib.pyplot as plt
import numpy as np
from sympy import symbols
from mayavi import mlab

x,y,z = symbols('x y z')
def gradient(f):
    return (f.diff(x), f.diff(y),f.diff(z))

f = x*y**2+z**2
g = gradient(f)

xrange = np.linspace(-3,3,15)
yrange = np.linspace(-3,3,15)
zrange = np.linspace(-3,3,15)
X,Y,Z = np.meshgrid(xrange, yrange, zrange)

U = np.zeros((15,15,15))
V = np.zeros((15,15,15))
W = np.zeros((15,15,15))

for i in range(len(xrange)):
    for j in range(len(yrange)):
        for k in range(len(zrange)):
            x1 = X[i,j,k]
            y1 = Y[i,j,k]
            z1 = Z[i,j,k]
            U[i,j,k] = g[0].subs({x:x1, y:y1, z:z1})
            V[i,j,k] = g[1].subs({x:x1, y:y1, z:z1})
            W[i,j,k] = g[2].subs({x:x1, y:y1, z:z1})


mlab.quiver3d(X,Y,Z,U,V,W)
事实上,我没有收到任何错误消息,只是一个黑色的Mayavi窗口。我已经等了10多分钟,但窗户一直是黑色的。我在一台装有Ubuntu 19.10的机器上运行这段代码。作为一个完整性问题,我想提及以下代码正常工作

%gui qt
from mayavi import mlab
import numpy as np

def V(x, y, z):
    """ A 3D sinusoidal lattice with a parabolic confinement. """
    return np.cos(10*x) + np.cos(10*y) + np.cos(10*z) + 2*(x**2 + y**2 + z**2)
X, Y, Z = np.mgrid[-2:2:100j, -2:2:100j, -2:2:100j]
mlab.contour3d(X, Y, Z, V)

我可以通过添加

mlab.init_notebook()
mlab.clf()
导入mlab模块后。这样,情节就出现在Jupyter笔记本中