Несколько предложений:
1) Если скаляры и цвета соответствуют общей палитре, вы должны быть в состоянии установить цветовую карту непосредственно от объема
2) Вы можете настроить ColorTransferFunction вашего объема как показано здесь: http://docs.enthought.com/mayavi/mayavi/auto/mlab_pipeline_other_functions.html#volume (воспроизведено ниже). Так для примера, до тех пор, как ваши цвета плавно варьируя скалярных значений, выбрать несколько точек ваших цветов и добавить их в ЦФК
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) Вы действительно нуждаетесь рендеринга тома? Если нет, это может быть проще визуализировать как 3D-точки и установить пользовательскую цветовую палитру, например. https://stackoverflow.com/a/30266228/209246. Таким образом, это будет выглядеть как присвоение скаляра каждому вокселю, а затем размещение цвета Rox voxel в соответствующую строку пользовательской цветовой карты.