Main Content

Differences Between Colormaps and Truecolor

Many graphics objects, such as surfaces, patches, and images, support two different techniques for specifying color: colormaps (which use indexed color) and truecolor. Each technique involves a different workflow and has a different impact on your visual presentation.

Differences in Workflow

A colormap is an m-by-3 array in which each row specifies an RGB triplet. To use a colormap in a graphical presentation, you assign an index to each location in your graphic. Each index addresses a row in the colormap to display a color at the specified location in the graphic. By contrast, using truecolor involves specifying an RGB triplet at every location in your graphic.

Here are some points to consider when deciding which to technique to use:

  • Truecolor is more direct. If you want to assign specific red, green, and blue values to specific locations in your graphic, it is usually easier to do it using truecolor.

  • Making changes in a region of the color palette is easier to do in a colormap. For example, if you want to brighten the transition from blue to green in a gradient, it is easier to edit those rows in the colormap than it is to edit the colors at the individual locations in your graphic.

  • The format of your data might be more appropriate for one of the workflows. For example, many compressed GIF images are stored using indexed color.

Both coloring techniques use a color array C to specify the color information. The shape of C depends on the type of graphics object and the coloring method you choose. This table summarizes the differences.

Type of Graphics ObjectProperty that Contains Color Array CShape of C for Indexed ColorShape of C for Truecolor
SurfaceCDataC is an m-by-n array that is the same size as the z-coordinate array. The value at C(i,j) specifies the colormap index for Z(i,j).C is an m-by-n-by-3 array, where C(:,:,i) the same size as the z-coordinate array.

C(i,j,1) specifies the red component for Z(i,j).

C(i,j,2) specifies the green component for Z(i,j).

C(i,j,3) specifies the blue component for Z(i,j).
ImageCDataC is an m-by-n array for an m-by-n image. The value at C(i,j) specifies the colormap index for pixel (i,j).C is an m-by-n-by-3 array for an m-by-n image.

C(i,j,1) specifies the red component for pixel (i,j).

C(i,j,2) specifies the green component for pixel (i,j).

C(i,j,3) specifies the blue component for pixel (i,j).
Patch (x, y, z)CDataTo color patch faces, C is a 1-by-m array for m patch faces. C(i) specifies the colormap index for face i.

To color patch vertices, C is an m-by-n array, where m is the number of vertices per face, and n is the number of faces. C(i,j) specifies the colormap index for vertex i of face j.
To color patch faces, C is an m-by-3 array for m patch faces. C(i,:) specifies the red, green, and blue values for face i.

To color patch vertices, C is an n-by-3 array, where n is the total number of vertices. C(i,:) specifies the red, green, and blue values for vertex i.
Patch (face-vertex data)FaceVertexCDataTo color patch faces, C is a 1-by-m array for m patch faces. C(i) specifies the colormap index for face i.

To color patch vertices, C is a 1-by-n array, where n is the total number of vertices. C(i) specifies the colormap index for vertex i.
To color patch faces, C is an m-by-3 array for m patch faces. C(i,:) specifies the red, green, and blue values for face i.

To color patch vertices, C is an n-by-3 array, where n is the total number of vertices. C(i,:) specifies the red, green, and blue values for vertex i.

Differences in Visual Presentation

Colormaps offer a palette of m colors, where m is the length of the colormap. By contrast, truecolor offers a palette of 256 × 256 × 256 ≈ 1.68 million colors.

Consider these factors as you decide how large your color palette needs to be:

  • Smaller color palettes are the most economical way to fill large regions with solid color. They are also useful in visualizing contours of surfaces.

  • Larger color palettes are better for showing subtle transitions and smooth color gradients.

Interpolating vertex colors across a patch face is one situation in which the differences between indexed color and truecolor are more noticeable. The following two patches illustrate an extreme case. The patch on the left uses a small colormap, whereas the patch on the right uses truecolor.

Two triangular patches with interpolated color. One patch uses a 16-color colormap and the other patch uses truecolor. The transitions between colors are smoother in the patch that uses truecolor.

If you are concerned about the limited palette of a colormap, you can add more colors to it. Change Color Scheme Using a Colormap shows how to use a colormap with a specific number of colors.

Related Topics