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

时间:2016-12-22 21:51:59

标签: matlab matlab-figure contourf

我试图用左下角的区域创建一个countourf情节。轮廓的值在下图中每个矩形的角上提供,网格上的所有其他点的值都为NaN。

我想知道如何通过绘制白色方块右上角的三角形部分来停止countourf图,即如何阻止它插入这两个值。

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

enter image description here

2 个答案:

答案 0 :(得分:1)

您正在获取该三角形,因为在该特定方格上您的数据类似于:

[1     2 ;...
 NaN   3]

这是一个完全有效的右上角三角形。

因此,您可以插入数据以获得更高的分辨率并使该三角形更小。或者您可以使用patch在所需位置添加白色方块。

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

enter image description here

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

enter image description here

答案 1 :(得分:0)

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

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,因此不会绘制。