Question

Minimum example that does not achieve it:

[X,Y,Z] = peaks;
figure;
pcolor(X,Y,Z);
shading flat;
hold all;
axes;
contour(X,Y,Z);
colormap gray;  % this should only apply to the contour plot axes...
axis off;       % ... but it doesn't

This shows both the contour plot and the pseudo colour plot in the grayscale colourmap. However, what I want to achieve is only turning the contours gray.

This is just a minimalistic example, in reality the contour plot is of different data that has a different range, so two independent caxis settings are required as well.

Was it helpful?

Solution

You can fix the problem by catenating two colormaps, and making sure that the values of the functions are such that they access the right part of the colormap:

cm = [jet(64);gray(64)];
figure,
pcolor(X,Y,Z)
shading flat
hold on
%# Z in the contour starts after the maximum
%# of Z in pcolor
contour(X,Y,Z-min(Z(:))+max(Z(:))+2,'LineWidth',2)
%# apply the colormap
colormap(cm)

enter image description here

For a more convenient solution, you may also want to have a look at this file exchange pick of the week

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top