- The 4th arg says to use Z for color data
- The EdgeColor=interp says to interpolate the color data as the edge color
- The FaceColor=none says to not fill the polygon. Just draw the edges
- The nans say not to connect the last point to the first point.

# Change colour of points in plot3 with increasing z value

103 views (last 30 days)

Show older comments

##### 0 Comments

### Answers (2)

Mike Garrity
on 10 Feb 2016

No, plot3 only supports a single color. You can use other graphics functions. The "traditional" one for this purpose is actually rather surprising. It's the patch function, which is designed for drawing filled polygons.

Consider this example:

x = cos(theta);

y = sin(theta);

z = theta;

plot3(x,y,z)

I can draw it colored by Z like this:

cla

patch([x nan],[y nan],[z nan],[z nan],'EdgeColor','interp','FaceColor','none')

What's going on here is the following:

There are a couple of other options, but that's probably what most old-school MATLAB programmers use.

Steven Lord
on 10 Feb 2016

##### 4 Comments

John Dzielski
on 14 Oct 2024

Hi,

This example does not work in 2023b. The syntax [x nan] now produces an error. I tried using [x, nan(size(x))] and that produces an almost correct plot. The feature that is missing is that the first and last points are connected. Thanks.

Voss
on 14 Oct 2024

@John Dzielski: It could be that your x, y, and z are column vectors (instead of row vectors as in the example), in which case you'd use the syntax [x; nan] to vectically concatenate x with a NaN (instead of [x nan] to horizontally concatenate x with a NaN)

theta = linspace(0,4*pi,100).';

x = cos(theta);

y = sin(theta);

z = theta;

whos x y z % column vectors

patch([x; nan],[y; nan],[z; nan],[z; nan],'EdgeColor','interp','FaceColor','none')

view(3)

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!