本质上,我正在尝试以二维方式绘制费米曲面图。即,对于 K 空间中的某个平面,带有插值的 f(n,vec_k)=e_f 的 2D 切割。具体来说,我有一个 numpy 数组:Eigen,有形状,
Eigen.shape = (100,100,100,10),其中前三个索引在向量 vec_k 上,第三个是波段索引“n”。如何通过任意曲面 Eigen == e_f 进行切割,其中 e_f 是标量数?
本质上,我正在尝试以二维方式绘制费米曲面图。即,对于 K 空间中的某个平面,带有插值的 f(n,vec_k)=e_f 的 2D 切割。具体来说,我有一个 numpy 数组:Eigen,有形状,
Eigen.shape = (100,100,100,10),其中前三个索引在向量 vec_k 上,第三个是波段索引“n”。如何通过任意曲面 Eigen == e_f 进行切割,其中 e_f 是标量数?
这通常使用行进立方体算法来解决。你应该看看这里contour3d()
的功能:http MLab
: //docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html#mayavi.mlab.contour3d。这正是你想要的。
contour3d(Eigen[:,:,:, bandNo], contours=e_f)
应该为你做。您还可以为所有波段指定多个表面,如下所示:
for bandNo in range(totalBands):
contour3d(Eigen[:,:,:, bandNo], contours=[eF1, eF2, eF3], opacity=0.4)
你应该得到这样的情节:http: //docs.enthought.com/mayavi/mayavi/_images/enthought_mayavi_mlab_contour3d1.jpg