Python:Seaborn:基于 Y 轴而不是 X 轴排序

Mai*_*ain 3 python graph matplotlib seaborn

我有以下数据

Index   ID          Amount
360822  96996965    452456
385861  97122362    388764
574798  17681255    428909
633610  17841255    425101
806930  18373304    1049287
814809  18406524    614720
877178  15683610    485065
996266  16123139    434727
1279340 16934859    403961
1356620 17167658    544570
Run Code Online (Sandbox Code Playgroud)

Index列是数据框的索引。我在图表中绘制了 ID(X 轴)与数量(Y 轴)的关系。ID 按升序排序。

import seaborn as sns

plot = sns.barplot(x='ID', y='Amount', data=df)

有没有一种方法可以根据 Y 轴对图进行排序,以便最大的 IDAmount位于最左侧,而最小的 IDAmount位于最右侧。

Diz*_*ahi 6

您可以将order=参数传递给 barplot 以更改条形的顺序。如果您按降序对数据帧进行排序Amount并获取相应的IDs,那么您可以在调用中使用它barplot

plot_order = df.sort_values(by='Amount', ascending=False).ID.values
plot = sns.barplot(x='ID', y='Amount', data=df, order=plot_order)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述