Plotting with categorical data

16 次查看(过去 30 天)
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

采纳的回答

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

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Categorical Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by