如何修复在 NaN 区域插值的 contourf 图?

How to fix contourf plot interpolating across NaN region?

我正在尝试创建一个 countourf 图,其中左下角的区域被白化。轮廓的值在下图中每个矩形的角处提供,网格上的所有其他点的值为 NaN。

我想知道如何阻止 countourf 图在白色方块的右上角绘制三角形部分,即如何阻止它对这两个值进行插值。

游戏结束:我想要左下角一个完整的白色矩形,而不是一个倒角的矩形。

看起来像一个边有七个正方形,所以我们可以设置

x = 1:7;
[XX,YY] = meshgrid(x); % create x,y grid for the square
ZZ = nan(7); % create number grid for the square
ZZ(1:3,1:3)=ones(3); % set the lower 3x3 to 1

figure;
hold on % hold your plot
plot()% your contour
imagesc(XX,YY,ZZ); % Or similar

这是大纲,由于您没有显示代码,我无法确定您需要什么确切的绘图功能。一般来说,想法是创建一个与等高线图一样大的网格,并将左下角的方块设置为 1,因此为白色,其余部分为 NaN,因此不绘制。

你得到那个三角形是因为在那个特定的正方形上你的数据看起来像:

[1     2 ;...
 NaN   3]

这是一个完全有效的直角上三角形轮廓。

因此您可以对数据进行插值以获得更高的分辨率并使三角形更小。或者您可以只使用 patch 在所需位置添加一个白色方块。

data=rand(8);
data(1:4,1:4)=NaN;
contourf(data)

hold on;
patch([1 1 5 5],[1 5 5 1],'w')