2010-02-11 19 views
3

J'ai une matrice colonne 2 (appelée M, que je visualise comme deux vecteurs en utilisant la commande (plot(M)) Matlab plot J'ai deux questions:Comment étiqueter deux vecteurs dans Matlab? .

  1. Je veux étiqueter les vecteurs eux-mêmes sur le terrain
  2. .
  3. Je veux étiqueter chaque ligne de la matrice (chaque composant vecteur) sur la parcelle.

Comment

Répondre

3

Un exemple:

M = cumsum(rand(10,2) - 0.5); 
x = 1:size(M,1); 
plot(x, M(:,1), 'b.-', x, M(:,2), 'g.-') 
legend('M1', 'M2') 
for i=x 
    text(i+0.1, M(i,1), sprintf('%.2f', M(i,1)), 'FontSize',7, 'Color','b'); 
    text(i+0.1, M(i,2), sprintf('%.2f', M(i,2)), 'FontSize',7, 'Color','g'); 
end 

plot

Alternativement, vous pouvez utiliser:

datacursormode() 

qui permettra à l'utilisateur de simplement point and click on points pour voir les étiquettes de données.

0
irais-je à faire ces choses? Vous

c une étiquette chaque axe avec la fonction:

xlabel('label') 
ylabel('label') 

Ils peuvent également prendre des arguments de cellule, où chaque ligne est une nouvelle ligne. C'est pratique pour montrer des unités. Étiquetage chaque point sur la figure peut se faire comme si:

for i=1:length(M) 
    text(M(i,1),M(i,2),'Label Text') 
end 

Le texte de l'étiquette peut également être une variable de chaîne que vous pouvez modifier avec sprintf et faire des chaînes spéciales pour chaque point.

+0

Ce ne sont pas les axes que je veux étiqueter; ce sont les vecteurs eux-mêmes. – Mike

+0

Donc, vous n'êtes pas en train de tracer M (:, 1) vs M (:, 2), mais plutôt chaque colonne en fonction de la longueur (M (:, 1))? Si c'est le cas, vous pouvez utiliser les commandes suivantes: texte (M (1,1), M (1,1), 'Etiquette 1'), texte (M (1,2), M (1, 2), 'étiquette 2') ou annotation() ou légende ('label 1', 'étiquette 2') Les pages de manuel ont quelques exemples pour cela. Le texte est utilisé comme avant, mais pour un seul point sur chaque ligne. La fonction d'annotation est beaucoup plus utile, mais elle a beaucoup d'options et de capacités de style. J'ai jeté la légende là aussi si vous ne voulez pas encombrer la fenêtre de l'intrigue. – Jeff

1

Vous devrez peut-être modifier ce point pour obtenir exactement la position des étiquettes, mais quelque chose comme ça va faire l'affaire.

M = [1 2; 3 4; 5 6] 
plot(M) 
nrows = size(M, 1); 
ncols = size(M, 2); 
x = repmat(nrows - .3, 1, ncols); 
y = M(end, :) - .3; 
labels = cellstr([repmat('Col', ncols, 1), num2str((1:ncols)')]); 
text(x, y, labels) 
Questions connexes