首页 > 解决方案 > MATLAB-为什么我的 contourf 拒绝将 .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

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

有什么建议么?

标签: matlabcolorbarcolormapcontourf

解决方案


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

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

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


推荐阅读