2D标量场:绘制具有不透明度的iso表面(iso线)

时间:2014-01-01 23:29:11

标签: matplotlib data-visualization mayavi

我在2D网格上有两个标量字段。我想为第一个标量场绘制一个等值线,根据第二个标量场设置其不透明度。

我从this SO answer开始尝试使用mayavi,但我无法从3D切换到2D。

以下是我在mayavi(python)中绘制iso行的方法。

 import numpy
 from mayavi import mlab

 x, y, z = numpy.ogrid[-5:5:64j, -5:5:64j, 0:0:1j]

 grid_x, grid_y, grid_z = numpy.mgrid[-5:5:64j, -5:5:64j, 0:0:1j]

 scalars = x*x*0.5 + y*y
 opacity = x**2
 opacity /= numpy.max(opacity) #normalize

 src = mlab.pipeline.scalar_field(grid_x,grid_y,grid_z, scalars)
 obj = mlab.pipeline.iso_surface(src, contours=[1,2,4,8,16,25,37],line_width=3)
 mlab.show()    

我不关心如何获得iso线:任何科学数据可视化工具和编程语言都很好。我唯一需要的是能够设置线的不透明度。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用

设置线条的全局不透明度
obj.actor.property.opacity = opacity

但不透明度必须是标量,你不能使用矢量因为不透明度是演员的全局属性