通过升序或降序订购 python Seaborn 条形图? [英] Ordering a python Seaborn bar-plot 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',
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屋!