通过升序或降序订购 python Seaborn 条形图? [英] Ordering a python Seaborn bar-plot by ascending or descending?

查看:29
本文介绍了通过升序或降序订购 python Seaborn 条形图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我当前的代码,使用美国境内死亡原因的发生次数数据集:

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', 
y='deaths',kind='bar',ci=None,legend_out=False,height=10, aspect=1.5)
plt.xlabel('Causes of Death',fontsize=15)
top_cause_of_death_barplot.set_xticklabels(fontsize=10)
plt.ylabel('Number of Observed Deaths',fontsize=15)
plt.title('Top Ten Leading Causes of Death in the United States (1999-2017)',fontsize=20)`

这会生成如下所示的图表:

This results in a chart that looks like this:

我试图重新排列图表,使条形按降序排列.我在我的代码中添加了一点并得到了这个:

I was attempting to re-order the graph such that the bars were in descending order. I added a bit to my code and got this:

`result = death.groupby(["cause_name"]) 
['deaths'].aggregate(np.median).reset_index().sort_values('cause_name')
top_cause_of_death_barplot=sns.catplot(data=death, x='cause_name', 
y='deaths',kind='bar',ci=None,legend_out=False,height=10, aspect=1.5, order=result['cause_name'] )
plt.xlabel('Causes of Death',fontsize=15)
top_cause_of_death_barplot.set_xticklabels(fontsize=10)
plt.ylabel('Number of Observed Deaths',fontsize=15)
plt.title('Top Ten Leading Causes of Death in the United States (1999-2017)',fontsize=20)`

虽然这段代码没有给我任何错误,但它似乎只是以不同的随机顺序重新排列条形,如下所示:

While this code did not give me any errors, all it seemed to do was reorder the bars in a different, random order like so:

为什么会这样?我做错了什么,是否有某种方法可以将条形重新排列为我不知道的升序或降序?

Why does this happen? What am I doing wrong, and is there some way of rearranging the bars into ascending or descending order that I am not aware of?

推荐答案

您必须将 x= 的值传递给 order=.在你的情况下,我会这样做:

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:])

这篇关于通过升序或降序订购 python Seaborn 条形图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆