2017-01-11 3 views
1

ich für Daten der Größe einer Farbkarte erschaffe (7x24), die ich habe, lässt es mit einigen Zufallszahlen ersetzenNormierte Einheiten für Anmerkungen hinzufügen nicht bis

b = randi(50,7,24); 
t = imagesc(b,[min(min(b)) max(max(b))]); 

jetzt Inorder Anmerkungen hinzufügen Ich weiß, müssen die genaue Anfangs- und Endpunkt meiner Achsen, so dass ich ein Rechteck hinzufügen können jeden Punkt im Bild

xPOSITION = get(gca,'Position') 

xPOSITION = 

    0.1300 0.1100 0.7750 0.8150 

annotation('rectangle',[0.13 0.11 (0.7750 - 0.13)/24 (0.8150 -0.11)/7],'FaceColor','blue','FaceAlpha',.2) 

ok jetzt wählen, wenn ich versuche, eine Anmerkung zu dem genauen Startpunkt der Daten hinzuzufügen, der Start Punkt scheint in Ordnung zu sein, aber die Größe des Rechtecks ​​sollte eigentlich sein gleich zu jedem Punkt ist viel kleiner enter image description here nach meiner Berechnung ist jede Box gleich (0,7750 - 0,13)/24 X (0,8150 -0,11)/7, weil die Einheiten normalisiert sind, mache ich einen Fehler bei der Berechnung? oder funktioniert die Annotation anders? jede Hilfe sehr

geschätzt

UPDATE würde nur ich 0,11 auf jede Dimension der Anmerkung hinzugefügt zu testen und es scheint die genaue Größe für den Grund zu sein, ich kann nicht herausfinden

annotation('rectangle',[0.13 0.11 ((0.7750 - 0.13) +0.11)/24 ((0.8150 -0.11)+0.11)/7],'FaceColor','blue','FaceAlpha',.2) 

enter image description here

Antwort

2

Die Position Eigenschaft ist die [left bottom width height]nicht[left bottom right top] wie es scheint, dass Sie es behandeln (da Sie Element 1 von 3 und 2 von 4 subtrahieren). Um die rect für die Anzeige korrekt zu berechnen, möchten Sie nur die width und height Komponenten durch die Anzahl der Elemente in diesen Dimensionen teilen.

annotation('rectangle', [xPOSITION(1), xPOSITION(2), ... 
         xPOSITION(3)/size(b, 2), xPOSITION(4)/size(b,1)]) 

Oder einfacher:

annotation('rectangle', xPOSITION ./ [1 1 fliplr(size(b))]) 

enter image description here

aber sagen, dass, wenn Sie einfach wollen, sind Rechtecke auf Ihre Daten zu ziehen, sind Sie wahrscheinlich besser dran zu schaffen nur eine rectangle Objekt, das automatisch in den Einheiten Ihrer Daten ist

rectangle('Position', [0.5 6.5 1 1], 'LineWidth', 5) 
+0

ohh! Ich erkenne meinen Fehler jetzt, danke für die Hilfe es funktioniert jetzt perfekt – Umar

+0

Danke, ich bekomme es jetzt – Umar

Verwandte Themen