2010-11-10 5 views
40

J'ai deux vecteurs représentant l'emplacement des points (x, y) que je voudrais tracer.Points d'étiquetage dans l'ordre dans une parcelle

Je sais comment les tracer, mais je voudrais aussi les étiqueter 1, 2, 3, 4 ... avec des étiquettes visibles sur l'intrigue. Les étiquettes représentent leur ordre dans le vecteur.

Répondre

67

est ici une façon de le faire:

p = rand(10,2); 
labels = cellstr(num2str([1:10]')); %' # labels correspond to their order 

plot(p(:,1), p(:,2), 'rx') 
text(p(:,1), p(:,2), labels, 'VerticalAlignment','bottom', ... 
          'HorizontalAlignment','right') 

alt text

+3

Je trouve qu'il est utile d'ajouter ' 'parent', axesHandle' comme option supplémentaire à' Text', surtout si vous tracer de dans une fonction, pour s'assurer que le texte apparaît réellement sur la bonne figure. – Jonas

+0

Bonjour, Comment feriez-vous cela avec "set"? 'h = text (p (:, 1), p (:, 2), étiquettes); set (h, 'Position', [p (:, 1) p (:, 2)], 'Chaîne', libellés); 'Cela ne fonctionne pas. – k4lls

+0

@ k4lls: C'est parce que 'h' est un tableau de graphismes de type handle (chaque" label "créé est une instance' text' séparée). Soit vous mettez chaque 'h (i)' dans une boucle, soit vous utilisez la syntaxe spéciale: 'set (h, {'Position'}, num2cell (p, 2), {'String'}, étiquettes)'. En savoir plus à ce sujet dans les documents: http://www.mathworks.com/help/matlab/ref/set.html#f67-575595 – Amro

Questions connexes