Find the number of red marks in box plot

17 vues (au cours des 30 derniers jours)
NA
NA le 12 Déc 2021
Modifié(e) : Chris le 12 Déc 2021
I have the box plot like this. How can I find the number of the red marks?
T = [1;-1;0.5;-0.5;0.75;-0.75;-6;-7;4;3];
h = boxplot(T,'Labels',{'1'});

Réponse acceptée

Chris
Chris le 12 Déc 2021
Modifié(e) : Chris le 12 Déc 2021
One method, which may not necessarily correlate to a boxplot in all situations (but probably works for the default boxplot), is to use isoutlier:
T = [1;-1;0.5;-0.5;0.75;-0.75;-6;-7;4;3];
outliers = isoutlier(T);
numOutliers = sum(outliers)
numOutliers = 2
h = boxplot(T,'Labels',{'1'});
If you need to be sure you have the exact count in the boxplot, you can get the data in the image and drill down to find the outliers:
ax = gca; % Get current axes
bxplt = ax.Children; % The boxplot
plts = bxplt.Children % Individual plots that make up the boxplot.
plts =
7×1 Line array: Line (Outliers) Line (Median) Line (Box) Line (Lower Adjacent Value) Line (Upper Adjacent Value) Line (Lower Whisker) Line (Upper Whisker)
% plts(1) holds the outliers
numRedMarks = numel(plts(1).YData)
numRedMarks = 2
% XData or YData -- points that make up the Outliers plot
To programmatically find the plots of outliers (in the event that you have more than one box):
idxs = find(strcmp({plts.Tag},'Outliers'));
outlierCell = {plts(idxs).YData}
outlierCell = 1×1 cell array
{[-7 -6]}
numMarksFirstPlot = numel(outlierCell{1})
numMarksFirstPlot = 2

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by