2017-05-08 1 views
1

Je veux montrer la direction de cellules spécifiques dans une figure que je suis en train de lire à partir d'une matrice.Comment créer une flèche diagonale dans une figure en utilisant 'symbole flèche en latex'?

Dans la figure ci-jointe, je pourrais créer la flèche de direction gauche, mais je ne parviens pas à insérer une flèche diagonale dans la direction sud-ouest.

enter image description here

Apparemment latex arrow symbol, fonctionne très bien pour la flèche gauche, flèche droite, flèche haut et flèche vers le bas, mais échoue pour les flèches diagonales.

Dans l'image ci-jointe, j'ai besoin d'insérer des flèches dans le sens sud-ouest à travers des cellules cyan. Comment faire ça?

Voici le script que je suis en train,

for row=1:size(data,1) 
    for col=1:size(data,2); 

     if data(row,col)==1 
      rectangle('Position',[col-0.5 row 1 1], 'FaceColor','y','EdgeColor','k', 'LineWidth', 0.1) 
      text(col-0.95,row+0.6,'\leftarrow', 'fontsize', 6); 

     elseif data(row,col)==2 
      rectangle('Position',[col-0.5 row 1 1], 'FaceColor','c','EdgeColor','k', 'LineWidth', 0.1) 
      text(col-0.95,row+0.6,'\swarrow', 'fontsize', 6); 

     else 
      rectangle('Position',[col-0.5 row 1 1], 'FaceColor','w','EdgeColor','k', 'LineWidth', 0.1)    
     end 

    end 

    set(gca,'Visible','off') 
end 

Edit: l'option Annotation augmentera la complexité et nécessite le positionnement des flèches pour chaque autre problème. Si l'on pouvait utiliser le symbole de flèche en latex, le problème deviendrait beaucoup plus facile.

+0

Avez-vous pensé à dessiner seulement les vecteurs, au lieu d'utiliser du texte Latex pour cela? – Bernhard

+0

Non, je n'en ai aucune idée. Pourriez-vous élaborer un peu plus. – Mario

+0

'annotation' peut faire le travail –

Répondre

1

Comme suggéré ci-dessus, vous pouvez utiliser quiver pour dessiner les flèches. En outre, pcolor est un bien meilleur moyen de tracer tous les rectangles et de les colorier.

Voici un exemple pour un code qui utilisent les deux pour créer quelque chose comme ce que vous voulez:

data = randi(3,10)-1; % some random data 
% plot the rectangles: 
pcolor([data data(:,end); 
     data(end,:) 0]) 
% set the colors to w-y-c: 
colormap([1 1 1; 
    1 1 0; 
    0 1 1]); 
[r, c] = ndgrid(1:size(data,1),1:size(data,2)); % a grid of all the cells 
% logical indexing for the arrows: 
leftarrow = (data==1); 
swarrow = (data==2); 
% plot all the arrows in black: 
hold on 
quiver([r r]+0.1,[c c]+0.5,[-leftarrow.' -swarrow.'],... 
    [zeros(size(data)) -swarrow.'],'AutoScaleFactor',0.5,'Color','k') 
hold off 
set(gca,'Visible','off') 

Et un résultat typique: pcolor & quiver