index of box plot outliers

11 vues (au cours des 30 derniers jours)
ahmed shaaban
ahmed shaaban le 16 Sep 2014
Commenté : Robert White le 9 Sep 2021
I am trying to label the outliers of the box plot with year number. in the following code, pre_1 is years 1950-2010 for only january, pre_2 is the same but for Feb, and so on to Dec. I am wondering how can i get the index of each outliers, the ydata gives me the outliers value, but I still cannot find the index.
pre12345101112=[pre_1 pre_2 pre_3 pre_4 pre_5 pre_6 pre_7 pre_8 pre_9 pre_10 pre_11 pre_12];
figure;boxplot(pre12345101112)
h = findobj(gcf,'tag','Outliers');
xdata = get(h,'XData')
ydata = get(h,'YData')
thanks in advance

Réponse acceptée

per isakson
per isakson le 17 Sep 2014
Modifié(e) : per isakson le 17 Sep 2014
Try this
m = randn(48,12);
e = eps(max(m(:)));
boxplot( m )
h = flipud(findobj(gcf,'tag','Outliers')); % flip order of handles
for jj = 1 : length( h )
x = get( h(jj), 'XData' );
y = get( h(jj), 'YData' );
for ii = 1 : length( x )
if not( isnan( x(ii) ) )
ix = find( abs( m(:,jj)-y(ii) ) < e );
text( x(ii), y(ii), sprintf( '\\leftarrowY%02d', ix ) )
end
end
end
it labels the outliers
  3 commentaires
allan
allan le 12 Août 2017
Modifié(e) : allan le 12 Août 2017
What are the use of these two lines? e = eps(max(m(:))); ix = find( abs( m(:,jj)-y(ii) ) < e );
Also, is there a way to index the "subject" of the outliers instead of the 'value'?
Many thanks.
Robert White
Robert White le 9 Sep 2021
This was very helpful, thank you! Worked great.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by