21

我的数据如下所示:

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

3 回答 3

24

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

于 2014-07-07T21:58:29.730 回答
1

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

x_order应该替换为order

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

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

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

于 2020-06-06T14:31:08.477 回答
0

文档看来,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'])
于 2018-06-01T09:07:02.960 回答