How to render a bar chart in descending order with x-axis label on each bar?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Andrew Holloway-Breward
am 18 Jun. 2021
Beantwortet: Andrew Holloway-Breward
am 18 Jun. 2021
I just cannot fathom this out and wondered whether anybody could help before my PC exits the window!
I am trying to plot a bar chart with the values displayed in descending order and each bar has its label shown on the x-axis and nothing I've tried works.
My current code is this: -
clc;
clear;
T = readtable('data/car_insurance_claim_cleanse.csv');
target = table2array(T(:,26));
delCols = [1 3 24 26];
T(:,delCols) = [];
[idx, scores] = fscchi2(T, target);
varnames = T.Properties.VariableNames(idx);
labels = escapeLodash(varnames);
bar(labels, scores(idx));
xlabel('Rank');
ylabel('Score');
and this produces a bar chart like this: -

however as you can see the sequence of the bars is not in descending order?
If I change my code to: -
clc;
clear;
T = readtable('data/car_insurance_claim_cleanse.csv');
target = table2array(T(:,26));
delCols = [1 3 24 26];
T(:,delCols) = [];
[idx, scores] = fscchi2(T, target);
varnames = T.Properties.VariableNames(idx);
labels = escapeLodash(varnames);
bar(scores(idx));
xlabel('Rank');
ylabel('Score');
xticklabels(labels);
I get the columns in the correct sequence however my labels are missing from each bar?

escapeLodash just escapes the underscores for display purposes, but here's the code anyway: -
function r = escapeLodash(labels)
work1=cellstr(labels);
work2 = strrep(work1, '_', '\_');
r = nominal(work2);
end
Any ideas?
2 Kommentare
Scott MacKenzie
am 18 Jun. 2021
It might help if you provide the complete code that generated these charts.
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Labels and Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!