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

Python 如何改变seaborn中因子图的顺序,python,pandas,bar-chart,seaborn,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="ba

我的数据如下所示:

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'])

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

从中可以看出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'])

正如@Pablo在评论中写道的,@Archie在他们的回答中正确地提到:

x_订单
应替换为
order

对于来这里寻找
kind=“count”
排序解决方案的人,可以这样做:

sns.catplot(x=“model”,data=m,kind=“count”,order=m.model.value\u counts().index)


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

我无法使用Python 2.7.6在OS X上复制,我得到了您想要的顺序。请使用
X\u order
关键字参数。@Ffisegydd,这很可能是:
import seaborn as sb;sb.工厂批次('model','rate',data=m)
。我也得到了
[1,2,13]
的操作顺序。我解决了我的问题。因为我将模型的类型更改为字符串,这就是为什么11将出现在2之前。非常感谢你的帮助!!!:)但实际上我仍然对x_订单很好奇,我必须指定一个索引才能做到这一点吗?嗨,mwaskom,非常感谢您的帮助!我是这样想出来的,请看更新,但我仍然对使用索引来实现这一点感到好奇。非常感谢。x_顺序参数已重命名为orderNope,它是
顺序
而不是
行顺序
行顺序
仅在指定
参数时起作用,并且它将每个条形输出到自己的图形中