Visualización de campos escalares en Python.

Necesito visualizar varios campos escalares superpuestos en Python. mayavi biblioteca de mayavi para hacer este tipo de ttwigs. El problema es que no entiendo cómo personalizar un mapa de color para campos escalares. Mi idea es tener tonos de un color para cada campo. Intenté adoptar un ejemplo , pero no funciona. Aquí está mi código para visualizar un campo escalar usando tonos de rojo:

 import numpy as np from mayavi import mlab x, 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) volume = mlab.pipeline.volume(src) lut = np.zeros((256, 4), np.uint8) lut[:,-1] = 255 lut[:, 0] = np.linspace(0, 255, 256) volume.module_manager.scalar_lut_manager.lut.table = lut mlab.draw() mlab.view(40, 85) mlab.show() 

Sin embargo, el gráfico de salida es siempre con una tabla de consulta azul-roja estándar.

No pude encontrar una solución utilizando lut_manager , sin embargo, la solución que se encuentra a continuación, siguiendo esta respuesta de github funciona para mí.

 import numpy as np from mayavi import mlab # import color transfer function from vtk from tvtk.util import ctf # import matlab colormaps from matplotlib.pyplot import cm x, 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) volume = mlab.pipeline.volume(src) # save the color transfer function of the current volume c = ctf.save_ctfs(volume._volume_property) # change the alpha channel as needed c['alpha'][1][1] = 0.5 # change the color points to another color scheme # in this case 'magma' c['rgb']=[[a[0],a[1],a[2],cm.magma.colors.index(a)/255] for a in cm.magma.colors] # load the new color transfer function ctf.load_ctfs(c, volume._volume_property) # signal for update volume.update_ctf = True mlab.show()