MATLAB-为什么我的轮廓线拒绝将.1- -.1值填充为白色?

问题描述

我正在尝试创建具有特定配色方案的轮廓图。我将颜色图定义为特定的矩阵值,并在代码中将其定义为这样。

cb=[.64 .08 .18;1 0 0;1 .41 .16;1 1 .07;1 1 1;0 1 0;0 1 1;.07 .62 1;0 0 1];

这是我的轮廓脚本。

figure
contourf(X_w,Z_w,w,'LevelList',[-.1 .1 .2 .4 .6],'LineColor','none')
ylim([0 4])
xlim([-4 20])
xticks([-4 -2 0 2 4 6 8 10 12 14 16 18 20])
yticks([0 .5 1 1.5 2 2.5 3 3.5 4])
pbaspect([3 1 1])
colormap(flipud(cb))
colorbar('Ytick',-.6:.2:.6)
caxis([-.6 .6])

它产生的数字是这个。 [1]:https://i.stack.imgur.com/b7SNv.png

一切都正确,但是应该将白色和绿色切换。颜色条正确且值正确,但颜色图与颜色条不匹配。绿色应该是白色,白色应该是绿色。

有什么建议吗?

解决方法

您可能会受益于在所需颜色之间进行插值,从而使绘图在颜色之间进行平滑过渡。可能发生的事情是,您认为为0的数据实际上非常小且为负数。我同意reza的观点,认为需要提供绘图数据以进一步提供帮助。在此之前,请尝试使用interp1函数重新定义所需的地图,如下所示:

cb = interp1(1:9,cb,linspace(1,9,128),'pchip');

请注意,我在这里只使用数字9,因为那是您拥有的颜色数。数字128只是所需输出点(内插颜色)的数量。