how to change the order of factor plot in seaborn

后端 未结 3 535
孤街浪徒
孤街浪徒 2021-01-07 23:02

My data looks like this:

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


        
相关标签:
3条回答
  • 2021-01-07 23:19

    From the documentation it appears that the seaborn API has updated again, the argument x_order should be replaced by order:

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

    Also, factorplot has been renamed and will be removed in future releases; it is replaced by catplot:

    sns.catplot('model', 'rate', data=m, kind="bar", order=['1','2','13'])
    
    0 讨论(0)
  • 2021-01-07 23:33

    As @Pablo wrote in his comment and @Archie correctly mentioned in their answer:

    x_order should be replaced by order

    For those who came here looking for a sort solution for kind="count", it is possible to do so:

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

    It's because by default value_counts method will return descending sorted values by count.

    0 讨论(0)
  • 2021-01-07 23:37

    Your update to the post shows the correct way to do it, i.e. you should pass a list of x values to order in the order you want them plotted. The default for numeric data is to plot in sorted order, so if you have numeric values it's best to keep them as integers or floats instead of strings, so they will be in "natural" order.

    0 讨论(0)
提交回复
热议问题