How to sort data in a bar plot based on its values on Y-axis?

14 views (last 30 days)
Hi there,
I am working on a bar graph as shown below.
I would like to sort them 'descending' so that LS713A (the highest) is plotted at the left and then CH12B, CH202A, SC762B and SC748A (the lowest) respectively.
I tried to use reordercats but it does not work. Could you please give some example(s)?
Thank you and best regards.

Accepted Answer

Star Strider
Star Strider on 26 Feb 2023
I assume the x-data are categorical, because otherwise this is straightforward.
Perhaps this —
x = 1:5;
y = rand(1,5);
xlbl = categorical(["A","B","C","D","E"]);
figure
bar(xlbl,y)
title('Original')
Ax = gca;
% get(Ax)
xv = Ax.Children.XData;
yv = Ax.Children.YData;
[~,idx] = sort(yv, 'descend');
xv = reordercats(xv, idx);
figure
bar(xv(idx), yv(idx))
title('Sorted')
.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!