How to plot feature importance on x-axis and variable names on y-axis?

I wish to plot variables names on y-axis and feature importance on x-axis in Random Forest Regression. Also the variables on y-axis should be in descending order according to their feature importance on x-axis. I request you to kindly suggest me how to do it. D S Chahar

1 Comment

I want to generate the feature importance plot similar to attached image. I request you all to please suggest me how to create it in matlab. Many thanks in advance.
Devendra

Sign in to comment.

 Accepted Answer

See barh and particularly <the example>. Use the second optional output from sort to get the order of the variables when you sort them to put in descending order to use with xticklabels to label the y-axis tick values. Or, you could convert to categorical variable type for the x-value (as ordinal to keep the sorted order) and will get the labels automagically.
nfacts=8;
features="f"+[0:nfacts-1].';
F=randi([20,125],size(features));
[F,ix]=sort(F);
hB=barh(F);
yticklabels(features(ix))
xlabel('F Score'), ylabel('Features')
hTxt=text(hB.YEndPoints,hB.XEndPoints," "+string(F),'horizontal','left','vertical','middle');
NOTA BENE: with the horiontal bar, the x,y postions for text() are y,x on the plot axes nomenclature; that's easy to confuse and the text doesn't show up or is somewhere bizarre.

3 Comments

Thank you very much for helping me out. I want a small correction and request you to please suggest me how to keep the values infront of horizonatal bar upto two decimal points only. I am attaching the plot generated by your matlab code on my data.
Once again thanks a lot.
Devendra
"...keep the values ... up to two decimal points only"
Just replace
" "+string(F)
generating the string to write with
compose(" %0.2f",F)
The olden way was with num2str

Sign in to comment.

More Answers (0)

Products

Release

R2023a

Asked:

on 8 Aug 2023

Commented:

on 9 Aug 2023

Community Treasure Hunt

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

Start Hunting!