2013-02-21 4 views
0

J'ai un code qui fait essentiellement ceci:diagramme changement Légende Matlab

for i = 1:length(ReliabilityStruct) 
    if (FailureFlags(i) == 0) 
     plot(X(i), Y(i), '.b'); 
    elseif (FailureFlags(i) == 1) 
     plot(X(i), Y(i), 'or'); 
    elseif (FailureFlags(i) == 2) 
     plot(X(i), Y(i), 'og'); 
    elseif (FailureFlags(i) == 3) 
     plot(X(i), Y(i), 'ok'); 
    else 
     fprintf('\nUnknown Flag, check Data\n') 
     return 
    end 
end 
drawnow; 
legend('Recovery', '1', '2', '3'); 

Donc, mon objectif est de faire un graphique qui a des symboles pour les drapeaux différents. Voir ci-dessous:

enter image description here

Comme vous pouvez le voir, la légende ne correspond pas exactement aux données. Comment pouvez-vous modifier chacune des entrées de légende pour résoudre ce problème? Sinon, y a-t-il une meilleure façon d'aborder cela?

Répondre

3

Je pense que vous pouvez utiliser quelque chose comme ça (ajouté bonus est que vous éviter les boucles):

ind = FailureFlags==0; 
plot(X(ind), Y(ind), '.b'); 

ind = FailureFlags==1; 
plot(X(ind), Y(ind), 'or'); 

ind = FailureFlags==2; 
plot(X(ind), Y(ind), 'og'); 

ind = FailureFlags==3; 
plot(X(ind), Y(ind), 'ok'); 

legend('Recovery', '1', '2', '3'); 
1

Faites un essai. Dans votre boucle faire une cession pour chaque parcelle comme suit:

p1=plot(X(i), Y(i), '.b'); 
elseif (FailureFlags(i) == 1) 
p2=plot(X(i), Y(i), 'or'); 
elseif (FailureFlags(i) == 2) 
p3=plot(X(i), Y(i), 'og'); 
elseif (FailureFlags(i) == 3) 
p4=plot(X(i), Y(i), 'ok'); 

vous pouvez utiliser la légende pour les choses spécifiques:

legend([p1 p2],'stuff','morestuff') 
1

Rappelez-vous que vous pouvez vous référer à l'utilisation pour toute fonction en utilisant la commande help. Pour votre cas, le help legend vous donnera des exemples d'utilisation comme suit.

legend(H,string1,string2,string3, ...) puts a legend on the plot 
containing the handles in the vector H using the specified strings as 
labels for the corresponding handles. 

Ainsi, vous pouvez obtenir le gestionnaire de tracé en attribuer la parcelle à une variable, comme p1=plot(X(i), Y(i), '.b');. Puis dessinez la légende en invoquant la commande avec les gestionnaires comme premier paramètre, comme legend([p1], 'something').

Questions connexes