订购图形图不是字母顺序的



我的数据如下:

        channel    ter   Id
0       BWM        A     6
1       IND        A     15  
2       RIA        C     2
3       BWM        B     7
4       IND        B     5  
5       RIA        A     4
6       BWM        C     3
7       IND        C     33  
8       RIA        B     21

当我绘制它时:

sns.set(style='darkgrid')
sns.barplot(x='channel', y='Id', hue='ter', data=df, palette='Set2')
plt.show()

它是由x轴上的字母顺序排序的,因此通道为bwm-> ind-> ria。但是,我需要的是通过计数(即ID值)对其进行排序,因此Ind是首先。

我尝试在barplot()中添加order = df['channel'].value_counts().index,但没有帮助。

我也希望能够根据计数订购ter,但不必花太多努力。

谢谢!

由于每个通道都包含多个ID,因此简单地定义了"由ID排序";您必须指定类似ID的总和,组中最大的ID或其他类似的内容。如果您想通过最大的ID和订购条,

sns.barplot(x='channel', y='Id', hue='ter', data=df, palette='Set2', order=df.groupby('channel').Id.sum().sort_values(ascending=False).index)

做这项工作。

最新更新