如何改变seaborn中因子图的顺序

时间:2014-07-07 20:03:36

标签: python pandas bar-chart seaborn

我的数据如下:

m=pd.DataFrame({'model':['1','1','2','2','13','13'],'rate':randn(6)},index=['0', '0','1','1','2','2'])

我希望在[1,2,13]中排序因子图的x轴,但默认值为[1,13,2]。

有谁知道如何改变它?

更新:     我想我已经通过以下方式解决了这个问题,但是使用索引可能有更好的方法吗?

sns.factorplot('model','rate',data=m,kind="bar",x_order=['1','2','13'])

3 个答案:

答案 0 :(得分:18)

您对帖子的更新会显示正确的方法,即您应按照您希望绘制的顺序将x值列表传递给order。数值数据的默认值是按排序顺序绘制,因此如果您有数值,最好将它们保留为整数或浮点数而不是字符串,因此它们将处于“自然”顺序。

答案 1 :(得分:1)

如@Pablo在其评论中所写,以及@Archie在其答案中正确提及:

x_order应替换为order

对于那些来这里为kind="count"寻找 sort 解决方案的人,可以这样做:

sns.catplot(x="model", data=m, kind="count", order=m.model.value_counts().index)

这是因为默认情况下,value_counts方法将按计数返回降序排序的值。

答案 2 :(得分:0)

documentation看来,seaborn API再次更新,参数x_order应替换为order

sns.factorplot('model', 'rate', data=m, kind="bar", order=['1','2','13'])

此外,factorplot已重命名,将在以后的版本中删除;它被catplot替换:

sns.catplot('model', 'rate', data=m, kind="bar", order=['1','2','13'])
相关问题