Plotting with categorical data

16 vues (au cours des 30 derniers jours)
Shaun Ramsumar
Shaun Ramsumar le 11 Mai 2020
Commenté : Shaun Ramsumar le 11 Mai 2020
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

Réponse acceptée

Johannes Hougaard
Johannes Hougaard le 11 Mai 2020
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 commentaire
Shaun Ramsumar
Shaun Ramsumar le 11 Mai 2020
Thank you Johannes,
Works, but I had to convert the second argument of reordercats with cellstr.

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 11 Mai 2020
[sy, syidx] = sort(y, 'descend');
cc = categorical(1:length(y), 1:length(y), string(x(syidx)));
plot(cc, sy);

Catégories

En savoir plus sur Categorical Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by