How to render a bar chart in descending order with x-axis label on each bar?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Andrew Holloway-Breward
el 18 de Jun. de 2021
Respondida: Andrew Holloway-Breward
el 18 de Jun. de 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 comentarios
Scott MacKenzie
el 18 de Jun. de 2021
It might help if you provide the complete code that generated these charts.
Respuesta aceptada
Más respuestas (0)
Ver también
Categorías
Más información sobre Labels and Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
