只是为了详细说明我在上面的评论,matplotlib的3D绘图实际上并不打算用于等值面之类的复杂对象。它的目的是为非常简单的3D图生成漂亮的,具有出版质量的矢量输出。它无法处理复杂的3D多边形,因此,即使您自己实施了行进立方体来创建等值面,也无法正确渲染该等值面。
但是,您可以做的是使用mayavi(它的mlab
API比直接使用mayavi更加方便),它使用VTK处理和可视化多维数据。
作为一个快速示例(从mayavi gallery示例之一进行了修改):
import numpy as npfrom enthought.mayavi import mlabx, y, z = np.ogrid[-10:10:20j, -10:10:20j, -10:10:20j]s = np.sin(x*y*z)/(x*y*z)src = mlab.pipeline.scalar_field(s)mlab.pipeline.iso_surface(src, contours=[s.min()+0.1*s.ptp(), ], opacity=0.3)mlab.pipeline.iso_surface(src, contours=[s.max()-0.1*s.ptp(), ],)mlab.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)