2017-05-11 1 views
2

Matlab R2015b. J'ai utilisé le code suivant pour dessiner l'histogramme:Tracer une ligne verticale sur le tracé de l'histogramme matlab

close all; 
hold on; 
ko = histograms_windows_1_0{7}; 
histogram(ko); 
set(gca,'XLim',[0 30],'XTick',0:5:30); 
xticks = [0;0.16;0.33;0.5;0.66;0.83;1]; 
set(gca,'XTickLabel', xticks) 
xlabel('Seconds'); 
ylabel('Correct Transitions'); 

Cela me donne l'image:

enter image description here

Maintenant, je veux ajouter la ligne verticale montrant la valeur moyenne par l'axe « secondes », je sait déjà cette valeur et aussi l'écart-type. Quelque chose de similaire à: enter image description here

J'ai des valeurs mn et stdv. Je l'ai essayé ceci:

mn = mean(ko)/30; 
stdv = std(ko)/30; 
hax=axes; 
line([mn mn],get(hax,'YLim')) 
hold off; 

Mais il ne tient pas compte histogramme précédemment dessiné et dessine la ligne verticale mais cette ligne est affichée, aucun histogramme plus. Comment cela peut-il être réalisé?

+0

Juste pour vous le faire savoir, la moyenne et std ne seront pas là où vous vous attendez. Votre histogramme ressemble un peu à un gaussien, mais ce n'est pas le cas. La moyenne est probablement un peu moins de 0,5, donc la ligne serait en dehors du pic. La même chose avec std. Vous pouvez voir visiblement que votre histogramme n'a pas la même répartition à gauche et à droite, donc une seule valeur std n'aidera pas vraiment. Vous ne pouvez pas appliquer les maths qui sont pertinentes à la distribution gaussienne à différentes distributions –

+0

Cela dit, essayez 'histfit', il dessine la distribution ajustée avec l'histogramme –

Répondre

4

Le problème est la ligne

hax=axes; 

Cela crée un nouvel objet axe qui couvre la précédente.

La solution consiste à changer en

hax=gca; 

de sorte que le line ultérieur va à l'axe même qui contient l'histogramme.