index of box plot outliers

11 views (last 30 days)
ahmed shaaban
ahmed shaaban on 16 Sep 2014
Commented: Robert White on 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

Accepted Answer

per isakson
per isakson on 17 Sep 2014
Edited: per isakson on 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 Comments
allan
allan on 12 Aug 2017
Edited: allan on 12 Aug 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 on 9 Sep 2021
This was very helpful, thank you! Worked great.

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!