2016-12-22 11 views
0

Я пытаюсь создать график countourf с областью в нижнем левом углу. Значения для контура представлены в углу каждого прямоугольника на изображении ниже, а все остальные точки на сетке имеют значение NaN.Как исправить контурный график, интерполирующий через область NaN?

Я хочу знать, как остановить график countourf от рисования треугольной секции в верхнем правом углу белого квадрата, то есть как я могу остановить его от интерполяции по этим двум значениям.

Конец игры: Мне нужен полный белый прямоугольник слева внизу, а не скошенный прямоугольник.

enter image description here

ответ

0

Вы получаете этот треугольник, потому что на этой конкретной площади ваши данные выглядит примерно так:

[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

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, таким образом, не нанесенный на график.

 Смежные вопросы

  • Нет связанных вопросов^_^