这是我目前的代码,使用的是美国境内按发生次数划分的死亡原因数据集:
`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)`
这将生成如下所示的图表:
我试图重新排列图表,使条形图按降序排列。我在代码中添加了一点,得到了这个:
`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)`
虽然这段代码没有给予我任何错误,但它所做的似乎只是以不同的随机顺序重新排列条形图,如下所示:
为什么会发生这种情况?我做错了什么,是否有一些方法重新排列酒吧成升序或降序,我不知道?
2条答案
按热度按时间cotxawn71#
您必须将
x=
的值传递给order=
。在你的情况下,我会做:或者,如果您想删除“所有原因”栏:
kmpatx3s2#
您可以将
sns.catplot()
的order
参数设置为首选顺序。您可以使用df['col'].value_counts().index
来获取此订单。您还没有提供数据的示例,因此请允许我提供一个易于复制的示例。