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,它是顺序
而不是行顺序
,行顺序
仅在指定行
参数时起作用,并且它将每个条形输出到自己的图形中