Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

order bars in bar chart by value in descending order with plotly-express

Tags:

I need to make a plotly bar chart with bars ordered by value in descending order. I first order the dataframe by value in descending order. Then I use plotly.express to generate interactive bar chart. However, I found the bars are still in ascending order. Does anyone know what I did wrong? Thanks a lot for help.

import plotly.express as px
dat = pd.DataFrame({'word': ['apple', 'grape', 'orange', 'pear'],
                     'counts': [20, 5, 25, 10] } )
dat = dat.sort_values('counts', ascending=False)
px.bar(dat, x = 'counts',y='word', orientation='h')
like image 766
zesla Avatar asked Nov 03 '19 05:11

zesla


2 Answers

In the latest version of plotly 5.5.0, you can use categoryorder without the need for sorting the dataframe:

import plotly.express as px
dat = pd.DataFrame({'word': ['apple', 'grape', 'orange', 'pear'],
                     'counts': [20, 5, 25, 10] } )

fig = px.bar(dat, x = 'counts',y='word', orientation='h')
fig.update_layout(yaxis={'categoryorder':'total ascending'}) # add only this line

enter image description here

like image 63
Phoenix Avatar answered Oct 05 '22 00:10

Phoenix


You should set ascending to True: The values of the y axis are ascending from bottom to top.

like image 25
Stanislas Morbieu Avatar answered Oct 04 '22 23:10

Stanislas Morbieu