Custom colormap example

An example showing how a custom colormap (or look up table) can be used for a given object.

Although the end user specifies colormaps by giving the name of a set of predefined colormaps, Mayavi (and VTK) deal with color internally using ‘Look Up Tables’ (LUT): a table that associate a scalar value to a color defined by its RGBA components.

In this example, we show how the LUT of an object can be retrieved and modified. Specificaly, we start by giving a surf object the ‘cool’ colormap, but we modify add to add a transparency effect.

Notice in the resulting image how the surface becomes more transparent for its lower points.

Note that if you want to use a different number of colors, you can change the ‘number_of_colors’ attribute of the lut object and assign a new array of the right shape to its ‘table’ attribute.

../_images/example_custom_colormap.jpg

Python source code: custom_colormap.py

# Create some data
import numpy as np

x, y = np.mgrid[-10:10:200j, -10:10:200j]
z = 100 * np.sin(x * y) / (x * y)

# Visualize it with mlab.surf
from mayavi import mlab
mlab.figure(bgcolor=(1, 1, 1))
surf = mlab.surf(z, colormap='cool')

# Retrieve the LUT of the surf object.
lut = surf.module_manager.scalar_lut_manager.lut.table.to_array()

# The lut is a 255x4 array, with the columns representing RGBA
# (red, green, blue, alpha) coded with integers going from 0 to 255.

# We modify the alpha channel to add a transparency gradient
lut[:, -1] = np.linspace(0, 255, 256)
# and finally we put this LUT back in the surface object. We could have
# added any 255*4 array rather than modifying an existing LUT.
surf.module_manager.scalar_lut_manager.lut.table = lut

# We need to force update of the figure now that we have changed the LUT.
mlab.draw()
mlab.view(40, 85)

mlab.show()

Previous topic

Boy example

Next topic

Surface from irregular data example

This Page