2016-12-22 3 views
0

Ich versuche ein Countouf-Diagramm mit der Region in der linken unteren Ecke zu erstellen. Die Werte für die Kontur werden an der Ecke jedes Rechtecks ​​im unteren Bild angezeigt, und alle anderen Punkte auf dem Gitter haben einen Wert von NaN.Wie man Konturfotoplottinterpolation über NaN-Region repariert?

Ich möchte wissen, wie man den Countourf-Plot daran hindert, den dreieckigen Abschnitt oben rechts vom weißen Quadrat zu zeichnen, d. H. Wie verhindere ich, dass er über diese beiden Werte interpoliert.

Spiel beenden: Ich möchte ein komplettes weißes Rechteck links unten, kein abgerundetes Rechteck.

enter image description here

Antwort

0

Du dieses Dreieck bekommen, weil auf diesem spezifischen Platz sieht Ihre Daten so etwas wie:

[1  2 ;... 
NaN 3] 

Und das ist eine völlig gültige obere rechte Dreieck Kontur.

Sie können also Ihre Daten interpolieren, um mehr Auflösung zu erhalten und das Dreieck kleiner zu machen. Oder Sie können einfach patch verwenden, um ein weißes Quadrat an der gewünschten Position hinzuzufügen.

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

Es sieht aus wie sieben Quadrate eine Seite, so können wir

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 

Dies ist der Umriss festgelegt, kann ich nicht bestimmen, welche Funktion genau Plotten Sie benötigen, da Sie nicht zeigen dein Code. Im Allgemeinen besteht die Idee darin, ein Raster zu erstellen, das so groß wie das Ihres Konturdiagramms ist, und das untere linke Quadrat auf 1 zu setzen, also weiß, so dass der Rest NaN nicht gezeichnet wird.