Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to sort bars in increasing order in a bar chart? [duplicate]

I have a DataFrame df that I convert to df_c using the code shown below:

df = pd.DataFrame(columns=["App","Feature1", "Feature2","Feature3",
                           "Feature4","Feature5",
                           "Feature6","Feature7","Feature8"], 
                  data=[["SHA",0,0,1,1,1,0,1,0],
                        ["LHA",1,0,1,1,0,1,1,0],
                        ["DRA",0,0,0,0,0,0,1,0],
                        ["FRA",1,0,1,1,1,0,1,1],
                        ["BRU",0,0,1,0,1,0,0,0],
                        ["PAR",0,1,1,1,1,0,1,0],
                        ["AER",0,0,1,1,0,1,1,0],
                        ["SHE",0,0,0,1,0,0,1,0]])
df_c = df.iloc[:, 1:].eq(1).sum().rename_axis('Feature').reset_index(name='Cou‌​nt')

Then I create a bar chart using matplotlib and seaborn:

plt.figure(figsize=(12,8))
ax = sns.barplot(x="Feature", y="Count", data=df_c, palette=sns.color_palette("GnBu", 10), order=df_c['Feature'])
plt.xticks(rotation='vertical')
ax.grid(b=True, which='major', color='#d3d3d3', linewidth=1.0)
ax.grid(b=True, which='minor', color='#d3d3d3', linewidth=0.5)
plt.show()

I want to sort bars in increasing order from left to right. If I do order=df_c['Count'], the bars disappear.

like image 810
Dinosaurius Avatar asked Nov 06 '17 13:11

Dinosaurius


1 Answers

Simplest way is to sort before plotting:

df_c = df_c.sort_values('Count')
like image 199
jezrael Avatar answered Nov 15 '22 19:11

jezrael