2017-07-13 3 views
0

J'essaie de faire deux graphiques dans la même figure GUI qui a 2 axes différents. Je voudrais une parcelle dans un axe alors que le suivant dans l'autre. Cependant, mes deux parcelles sont générées à partir d'une seule fonction, que j'appelle dans l'interface graphique avec un bouton poussoir.Tracer 2 tracés dans deux axes différents de la même fenêtre GUI

Lorsque j'écris axes() avant le 2ème tracé à l'intérieur de la fonction, j'obtiens un troisième axe qui est mal placé. Si j'omets l'appel axes(), j'obtiens les deux tracés dans les mêmes axes. Comment puis-je tracer le deuxième graphique dans les deuxièmes axes?

GUI

function pushbutton1_Callback(hObject, eventdata, handles) 
--------- 
--------- 
--------- 
axes(handles.axes1); 
    kendrickplot(n,alpha,em,infile,outfile); 
--------- 

Fonction

function [ynew,xnew]=kendrickplot(n,alpha,em,infile,outfile) 
--------- 
--------- 
scatter(xnew,ynew,'b.') 
xlim([0,max(a(:,4))]) 
ylim([min(a(:,5)),max(a(:,5))]) 
hold on 
plot(xnew,n*(ones(length(xnew))),'r') 
scatter(a(:,4),a(:,5)) 
end 
+0

Ajouter les axes à gérer les fonctions graphiques '' scatter' et plot' – EBH

+2

Essayez de passer '' handles.axes1' et handles.axes2' à votre fonction et d'appeler 'axes (h1), et' 'axes (h2) 'avant chaque parcelle –

+0

@VaheTshitoyan pourriez-vous donner un exemple de ce que vous suggérez? – Rudstar

Répondre

3

Une façon est de passer les poignées des axes à la fonction qui fait le tracé.

  1. modifier votre fonction pour accepter la parcelle poignées:

    function [ynew,xnew]=kendrickplot(n,alpha,em,infile,outfile, h1, h2)

  2. Dans la fonction, ajoutez axes(h1) avant la première parcelle et axes(h2) avant la 2ème parcelle. Dans votre rappel, appelez la fonction .