If you want to plot a surface representing a matrix by elevation and colour of its points you have to transform the matrix data in a 3D data that MayaVi2 can understand. mlab knows how to do this, but it does not have the nice user interface of MayaVi2. Here is a script that create a SurfRegular object using mlab, and then loads it in MayaVi2. A more detailed version of this script is given in the examples pages Cookbook/MayaVi/Examples.

```
1 import numpy
2 def f(x, y):
3 return numpy.sin(x*y)/(x*y)
4 x = numpy.arange(-7., 7.05, 0.1)
5 y = numpy.arange(-5., 5.05, 0.05)
6 from enthought.tvtk.tools import mlab
7 s = mlab.SurfRegular(x, y, f)
8 from enthought.mayavi.sources.vtk_data_source import VTKDataSource
9 d = VTKDataSource()
10 d.data = s.data
11 mayavi.add_source(d)
12 from enthought.mayavi.filters.warp_scalar import WarpScalar
13 w = WarpScalar()
14 mayavi.add_filter(w)
15 from enthought.mayavi.modules.outline import Outline
16 from enthought.mayavi.modules.surface import Surface
17 o = Outline()
18 s = Surface()
19 mayavi.add_module(o)
20 mayavi.add_module(s)
```

You can run this script by running "mayavi2 -n -x script.py", loading it through the menu (File -> Open File), and pressing Ctrl+R, or entering "execfile('script.py') in the python shell.