2009-11-16 15 views
15

Wie nimmst du ein Plot und platzierst es in der Ecke (oder wo auch immer) eines anderen Plots in MATLAB?Plot Overlay MATLAB

Ich habe logarithmische Daten, die einen großen Leerraum in der oberen rechten Seite des Diagramms hat. In dem Leerraum würde ich gerne ein kleineres Diagramm überlagern, das eine vergrößerte Version des logarithmischen Plots in diesem Leerraum enthält (ähnlich einer vergrößerten Ansicht).

Bevor Sie mir sagen, dass es nicht getan werden kann, möchte ich erwähnen, dass ich es in Aktion gesehen habe. Wenn meine Beschreibung fehlt, lass es mich wissen und ich werde versuchen, es dir besser zu beschreiben.

Antwort

19

Ein Beispiel:

x = 1:20; 
y = randn(size(x)); 

plot(x, y,'LineWidth',2) 
xlabel('x'), ylabel('y'), title('Plot Title') 

h = axes('Position', [.15 .65 .2 .2], 'Layer','top'); 
bar(x,y), title('Bar Title') 
axis(h, 'off', 'tight') 

screenshot

+0

http://stackoverflow.com/questions/22485877/matlab-embed-zoom-in-subgraph-into-the-graph –

8

Sie können axes Eigenschaften 'position' und 'units' verwenden und sie übermäßig machen. Achten Sie darauf, kleine Achsen nach großen zu erstellen oder verwenden Sie uistack() Funktion, so dass große nicht kleine ausblenden.

Was Sie nicht tun können, ist ein Achskind eines anderen zu machen (wie Mathworks mit legend tun). Aber du brauchst es sowieso nicht.

Für das zweite Diagramm müssen Sie axes und line anstelle von plot und hold on verwenden.

Einheiten wie 'normalized' (dies ist die Standardeinstellung) ermöglicht ein einheitliches, größenanpassbares Aussehen, wenn die Größe der Elternfigur geändert wird (z. B. manuell maximiert).