2009-11-16 12 views
15

Comment prendre un tracé et le placer dans le coin (ou n'importe où d'ailleurs) d'un autre tracé dans MATLAB?Incrustation de tracé MATLAB

J'ai des données logarithmiques qui ont un grand espace blanc dans le coin supérieur droit du tracé. Dans l'espace blanc, je voudrais superposer une parcelle plus petite contenant une version agrandie du tracé du journal dans cet espace blanc (sorte de vue agrandie). Avant de me dire que cela ne peut être fait, je voudrais mentionner que je l'ai vu en action. Si ma description manque, faites-le moi savoir et je tenterai de vous le décrire.

Répondre

19

Un exemple:

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

Vous pouvez utiliser axes propriétés 'position' et 'units' et les rendre plus. Faites attention à créer de petits axes après un gros ou utilisez la fonction uistack() de sorte que le grand ne cache pas le petit.

Ce que vous ne pouvez pas faire est de faire un axe enfant d'un autre (comme Mathworks avec legend). Mais vous n'en avez pas besoin de toute façon.

Pour le deuxième graphique, vous devez utiliser axes et line au lieu de plot et hold on.

Les unités 'normalized' (qui est la valeur par défaut) permettent un aspect redimensionnable uniforme lorsque la figure parent est en cours de redimensionnement (par exemple agrandie manuellement).

Questions connexes