## Control Colormap Limits

For many types of visualizations you create, MATLAB^{®} maps
the full range of your data to the colormap by default. The smallest
value in your data maps to the first row in the colormap, and the
largest value maps to the last row in the colormap. All intermediate
values map linearly to the intermediate rows of the colormap.

This default mapping is useful in most cases, but you can perform the mapping over any range you choose, even if the range you choose is different than the range of your data. Choosing a different mapping range allows you to:

See where your data is at or beyond the limits of that range.

See where your data lies within that range.

Consider the surface *Z* = *X* + *Y*, where
–10 ≤ *x* ≤ 10 and –10 ≤ *y* ≤ 10.

[X,Y] = meshgrid(-10:10); Z = X + Y; s = surf(X,Y,Z); xlabel('X'); ylabel('Y'); zlabel('Z = C'); colorbar

How Surface Plot Data Relates to a Colormap describes the
properties that control the color in this presentation. Essentially,
the `CData`

property of the `Surface`

object
contains an array `C`

that associates each grid point
on the surface to a color in the colormap. By default, `C`

is
equal to `Z`

, where `Z`

is the array
containing the values of *z* = *f*(*x*,*y*)
at the grid points. Thus, the colors vary with changes in `Z`

.

The mapping range is controlled by the `CLim`

property
of the `Axes`

object. This property contains a two-element
vector of the form `[cmin cmax]`

. The default value
of `cmin`

is equal to the smallest value of `C`

,
and the default value of `cmax`

is the largest value
of `C`

. In this case, `CLim`

is ```
[-20
20]
```

because the range of `C`

reflects the
range of `Z`

.

Changing `CLim`

to `[0 20]`

clips
all the values at or below `0`

to the first color
in the colormap.

The `clim`

function changes the `CLim`

property to `[0 20]`

. Notice that the lower half of the
surface maps to the first color in the colormap (dark blue). This clipping
occurs because `C`

(which is equal to `Z`

)
is less than or equal to zero at those points.

clim([0 20])

*Before R2022a: Change the colormap limits using
caxis([0 20]).*

You can also widen the mapping range to see where your data lies within that range. For
example, changing the range to `[-60 20]`

results in a
surface that only uses half of the colors. The lower half of the colormap
corresponds to values that are outside the range of `C`

, so
those colors are not represented on the surface.

clim([-60 20])

*Before R2022a: Change the colormap limits using
caxis([-60 20]).*

**Note**

You can set the `CLim`

property for surface
plots, patches, images, or any graphics object that uses a colormap.
However, this property only affects graphics objects that have the `CDataMapping`

property
set to `'scaled'`

. If the `CDataMapping`

property
is set to `'direct'`

, then all values of `C`

index
directly into the colormap without any scaling. Any values of `C`

that
are less than 1 are clipped to the first color in the colormap. Any
values of `C`

that are greater than the length of
the colormap are clipped to the last color in the colormap.

## See Also

`clim`

| `colormap`

| `colorbar`

| `surf`