There are several ways to identify your patches and several ways to color them as well . Here you can create your coordinates without a for and plot loop and color your patches with one call to the patch function:
x = [NaN 1 3 7 9 23 8]; %# Sample x data y = [NaN 2 6 7 8 2 1]; %# Sample y data z = [NaN 1 4 5 5 4 1]; %# Sample z data N = numel(x); %# The number of sample data points X = [x; x([1 1],[N 1:N-1]); x]; %# X coordinates (one patch per column) Y = [y; y([1 1],[N 1:N-1]); y]; %# Y coordinates (one patch per column) Z = [z; z([N 1:N-1]); zeros(2,N)]; %# Z coordinates (one patch per column) C = round(63.*Z./max(Z(:)))+1; %# Color map index map = [linspace(0,1,64).' ... %'# Color map (64 values spanning from ones(64,2)]; %# white to cyan) figure(); %# Open a new figure patch(X,Y,Z,C,'FaceColor','interp',... %# Plot the patches 'EdgeColor','none'); colormap(map); %# Update color map hold on; %# Add to the plot line(X(1:2,:),Y(1:2,:),Z(1:2,:),... %# Plot the line 'Color','b','LineWidth',2); view(3); %# Change the view
And this will give you the following plot, with patches colored white with the highest values ββand fading to blue with the lowest values:

Explanation of indexed color display ...
The map variable above is a 64 by 3 matrix between 0 and 1. Each row represents an RGB triplet , thereby defining a unique color from cyan in row 1 to white in row 64. This is used as the color map of the shape. Face color data in C is a set of row indices in this color map, one for each value in Z The lowest values ββin Z mapped to index 1 (blue in the color map), while the highest values ββare mapped to index 64 (white in the color map).
source share