2017-08-30 2 views
2

J'ai un problème pour trouver l'emplacement exact d'un bar-plot MATLAB avec plusieurs barres. En utilisant le code suivantComment déterminer l'emplacement des barres dans une barre graphique?

A =[2.1974e-01 4.1398e-01 1.0889e-01 3.3550e-01; 
    4.2575e-01 5.2680e-01 2.3446e-01 9.7119e-02; 
    2.5702e+00 2.5594e+00 3.2481e+00 9.9964e-01]; 
b=bar(A); 

Je reçois l'intrigue suivante

bar plot with multiple bars

Maintenant, je veux ajouter des choses à ce complot, par exemple barres d'erreur, texte etc. Pour cette raison, je veux connaître la position exacte des barres individuelles.

Je suis capable d'accéder à des propriétés individuelles en utilisant le schéma b(1)., mais je ne sais pas quelle propriété appartient à la position de la barre. Comment puis-je obtenir l'emplacement exact de chaque barre individuelle?

Répondre

2

Vous êtes sur la bonne voie avec les propriétés de

b = bar(A); 

Les propriétés spécifiques dont vous avez besoin sont

  1. b.XOffset L'espacement entre les groupes de barres
  2. b.XData L'indice de chaque groupe de barres
  3. b.YData La hauteur de chaque barre

Pour les coordonnées y de la partie supérieure de chaque barre, vous pouvez simplement concaténer les valeurs `b.YData.

yb = cat(1, b.YData); 

Pour les coordonnées x, vous devez ajouter le décalage des indices

xb = bsxfun(@plus, b(1).XData, [b.XOffset]'); 

Maintenant, vous avez l'emplacement de la partie supérieure de chaque barre. Voici un exemple de barre d'erreur.

figure; 
bar(A) 
hold on; 
for ii = 1:length(xb(:)) 
    plot([xb(ii), xb(ii)], [yb(ii)-0.1 yb(ii)+0.1], 'xk-') 
end 

Error bars on bar plot

-1

Vous pouvez utiliser la visionneuse de propriétés de figure pour identifier les propriétés des postures de barres. Essayez-le et changez certaines valeurs. Ensuite, vous pouvez accéder aux propriétés et utiliser la fonction set.

Les valeurs sont les valeurs et X- y- des barres

+0

S'il vous plaît élaborer cette réponse, car il est assez vague à ce stade. S'il vous plaît ajouter une capture d'écran montrant quels boutons à cliquer et où les numéros sont affichés. Mieux encore: ajoutez un moyen de le faire par programmation, afin de ne pas avoir à copier manuellement les numéros à chaque fois. – Adriaan

+0

bonne idée, même si je ne pouvais pas trouver la bonne variable à nouveau. La seule information pertinente sur l'axe des x semble être 'X Data Source = auto' qui n'aide pas – madn

+0

Plus que @Adriaan a commenté, cette réponse est fausse parce que l'utilisation des propriétés de figure donnera la même valeur de x à chacun des barres dans un groupe spécifique. – Adiel