Plotting a bar chart with a categorical vector on the x-axis and a double vector on the y-axis.
The resulting bar chart is alphabetically arranged (by default) by the categorical vector on the x-axis.
How does one arrange the bar chart with highest to lowest values from the double vector on the y-axis ?
R, Shaun

 Akzeptierte Antwort

Johannes Hougaard
Johannes Hougaard am 11 Mai 2020

1 Stimme

Based on the help for the bar plot function with categoricals the solution is possibly to use the reordercats function.
I found this to be the way to do it
workdays = {'monday','tuesday','wednesday','thursday','friday','saturday','sunday'};
workhours = [8.0 4.5 8.2 7.4 10.2 3.1 0.6];
[~,arr] = sort(workhours,'descend');
X = reordercats(categorical(workdays),workdays(arr));
figure;
bar(X,workhours);

1 Kommentar

Shaun Ramsumar
Shaun Ramsumar am 11 Mai 2020
Thank you Johannes,
Works, but I had to convert the second argument of reordercats with cellstr.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 11 Mai 2020

1 Stimme

[sy, syidx] = sort(y, 'descend');
cc = categorical(1:length(y), 1:length(y), string(x(syidx)));
plot(cc, sy);

Kategorien

Mehr zu Data Distribution Plots finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by