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)
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:])
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)
Post a Comment for "Ordering A Python Seaborn Barplot By Ascending Or Descending"