Plusieurs suggestions:
1) Si vos scalaires et les couleurs correspondent à une palette de couleurs commune, vous devriez être en mesure de définir la palette de couleurs directement du volume
2) Vous pouvez personnaliser le ColorTransferFunction de votre volume comme illustré ici: http://docs.enthought.com/mayavi/mayavi/auto/mlab_pipeline_other_functions.html#volume (reproduit ci-dessous). Donc, pour votre exemple, tant que vos couleurs sont différentes en douceur avec les valeurs scalaires, choisissez quelques points d'intérêt vos couleurs et les ajouter dans le FCT
vol = mlab.pipeline.volume(src)
# Changing the ctf:
from tvtk.util.ctf import ColorTransferFunction
ctf = ColorTransferFunction()
ctf.add_rgb_point(value, r, g, b) # r, g, and b are float
# between 0 and 1
ctf.add_hsv_point(value, h, s, v)
# ...
vol._volume_property.set_color(ctf)
vol._ctf = ctf
vol.update_ctf = True
3) Avez-vous vraiment besoin du rendu de volume? Sinon, il peut être plus facile de visualiser sous forme de points 3D et de définir une carte de couleurs personnalisée, par ex. https://stackoverflow.com/a/30266228/209246. Cela équivaudrait donc à assigner un scalaire à chaque voxel, puis à placer la couleur RVB du voxel dans la rangée correspondante d'une palette de couleurs personnalisée.