如何将使用不同色彩映射的等高线图与pcolor图叠加?

8

无法实现的最小示例:

[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

这显示了轮廓图和伪彩色图,使用灰度调色板。然而,我想要实现的只是将轮廓变成灰色。

这只是一个极简的例子,在实际情况中,轮廓图是不同数据的,具有不同的范围,因此还需要两个独立的caxis设置。


相关:https://dev59.com/GnI-5IYBdhLWcg3wpqMK - Tobias Kienzler
1个回答

5
您可以通过连接两个颜色映射来解决问题,并确保函数的值使其访问颜色映射的正确部分:
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)

输入图像描述

为了更加方便的解决方案,您可能还想看一下这个文件交换中心本周的精选


1
谢谢。但是如果函数范围相差很大,可能需要小心。我也会看一下你提供的freezeColors - Tobias Kienzler
@Tobias Kienzler:是的,数据/颜色映射的缩放可能会很棘手。而且,如果数据提示不显示正确的值,这可能会很烦人。我的解决方案实际上是一种变通方法。 - Jonas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接