MATLAB: How to set explicit contour plot colors for specific value ranges

MATLABplot

Is it possible to set plot colors for specific value ranges?
I have defined the colormap as follows:
map = [0 1 0;
0 1 1;
0 0 1;
0 0.5 1;
1 1 1;
1 1 0.5;
1 1 0;
1 0.5 0;
1 0 0];
colormap(map);
caxis([-1 1]);
Can the colormap be somehow tied to the value ranges given in the table?

Best Answer

You will need to create a map matrix where the number of rows of a specific color is directly proportional to the length of its interval. Try this
Levels = [-8 -7 -5 -3 -1 1 3 5 7 8]/8;
num_points = diff(Levels)*8; % multiplied by 8 so that after scaling all elements will be integers
colors = [0 1 0;
0 1 1;
0 0 1;
0 0.5 1;
1 1 1;
1 1 0.5;
1 1 0;
1 0.5 0;
1 0 0];
map = [];
for i=1:numel(num_points)
map = [map; repmat(colors(i,:), num_points(i), 1)];
end