How to render a bar chart in descending order with x-axis label on each bar?

5 Ansichten (letzte 30 Tage)
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
Scott MacKenzie am 18 Jun. 2021
It might help if you provide the complete code that generated these charts.
Andrew Holloway-Breward
Andrew Holloway-Breward am 18 Jun. 2021
My apologies I thought summarising the bar chart bit was sufficient, but you're right.
I've updated the code as requested.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andrew Holloway-Breward
Andrew Holloway-Breward am 18 Jun. 2021
Finally got there, this reordercats function is really confusing and totally intuitive!
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);
labels = reordercats(labels, string(labels));
bar(labels, scores(idx));
xlabel('Rank');
ylabel('Score');
this produces the chart as follows: -

Weitere Antworten (0)

Kategorien

Mehr zu Labels and Annotations finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by