2009-11-16 12 views
15

Come si prende un grafico e lo si inserisce nell'angolo (o in qualsiasi altro punto) di un'altra trama in MATLAB?Sovrapposizione grafica MATLAB

Ho dati logaritmici che hanno un grande spazio bianco nella parte in alto a destra del grafico. Nello spazio bianco vorrei sovrapporre una trama più piccola contenente una versione ingrandita della trama del log in quello spazio bianco (una specie di come una vista ingrandita).

Prima di dirmi che non si può fare, vorrei dire che l'ho visto in azione. Se manca la mia descrizione, fammelo sapere e cercherò di descriverlo meglio.

risposta

19

Un esempio:

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

È possibile utilizzare axes proprietà 'position' e 'units' e renderli eccessivamente. Prestare attenzione a creare piccoli assi dopo quello grande o utilizzare la funzione uistack() in modo che il grande non nasconda quello piccolo.

Ciò che non si può fare è creare un figlio di assi di un altro (come fa Mathworks con legend). Ma non ne hai comunque bisogno.

Per il secondo grafico è necessario utilizzare axes e line anziché plot e hold on.

Le unità come 'normalized' (che è l'impostazione predefinita) consente l'aspetto uniforme ridimensionabile quando viene ridimensionata la figura genitore (ad esempio ingrandita manualmente).