9

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')
zesla
  • 11,155
  • 16
  • 82
  • 147

2 Answers2

11

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

Hamzah
  • 8,175
  • 3
  • 19
  • 43
4

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

Stanislas Morbieu
  • 1,721
  • 7
  • 11