Reputation: 11793
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')
Upvotes: 10
Views: 21847
Reputation: 1
This method breaks down (fails) when the y-category name is a number, while it works if it is a string.
import plotly.express as px
dat = pd.DataFrame({'index': [1,2, 4, 3],
'counts': [20, 5, 25, 10] } )
fig = px.bar(dat, x = 'counts',y='index', orientation='h')
fig.update_layout(yaxis={'categoryorder':'total ascending'})
Upvotes: 0
Reputation: 9786
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
Upvotes: 15
Reputation: 1827
You should set ascending
to True
: The values of the y axis are ascending from bottom to top.
Upvotes: 4