我在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线:任何科学数据可视化工具和编程语言都很好。我唯一需要的是能够设置线的不透明度。
由于
答案 0 :(得分:1)
您可以使用
设置线条的全局不透明度obj.actor.property.opacity = opacity
但不透明度必须是标量,你不能使用矢量因为不透明度是演员的全局属性