Skip to content Skip to sidebar Skip to footer

Ordering A Python Seaborn Barplot By Ascending Or Descending

This is my current code using a dataset of causes of death within the united states by number of occurrences: `top_cause_of_death_barplot=sns.catplot(data=death, x='cause_name',

Solution 1:

You have to pass values of x= to order=. In your case, I would do:

death = pd.read_csv('https://storage.googleapis.com/hewwo/NCHS_-_Leading_Causes_of_Death__United_States.csv', sep=',', header=0)

plot_order = death.groupby('Cause Name')['Deaths'].sum().sort_values(ascending=False).index.values

sns.catplot(data=death, x='Cause Name',  y='Deaths',kind='bar',ci=None, legend_out=False, order=plot_order)

enter image description here

Or, if you want to remove the "All causes" bar:

sns.catplot(data=death, x='Cause Name',  y='Deaths',kind='bar',ci=None, legend_out=False, order=plot_order[1:])

enter image description here

Solution 2:

You can set the order argument of sns.catplot() to your preferred order. You can use df['col'].value_counts().index to get this order. You haven't provided an example of your data, so allow me to provide an easily reproducible example.

import seaborn as sns
import pandas as pd
import numpy as np

a = np.random.choice(['cat', 'dog', 'hamster'], 100)

df = pd.DataFrame(a, columns=['animals'])

sns.catplot(data=df, x='animals',kind='count',ci=None,legend_out=False,
            height=3, aspect=1.5, order=df['animals'].value_counts().index)

enter image description here

Post a Comment for "Ordering A Python Seaborn Barplot By Ascending Or Descending"