我的数据如下:
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'])
答案 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'])