如何在 seaborn 中对 x 轴上的箱线图进行排序


您可以使用以下方法更改 Seaborn 中箱线图沿 x 轴的顺序:

方法 1:使用自定义顺序对箱线图进行排序

 sns. boxplot (x=' group_var ', y=' values_var ', data=df, order=[' A ',' B ',' C '])

方法 2:使用指标对箱线图进行排序

 group_means=df. groupby ([' group_var '])[' values_var ']. mean (). sort_values (ascending= True )

sns. boxplot (x=' group_var ', y=' values_var ', data=df, order=group_means. index )

以下示例展示了如何在实践中使用每种方法,下面的 pandas DataFrame 显示了来自三个不同球队的篮球运动员的得分:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B',
                            'B', 'B', 'C', 'C', 'C', 'C', 'C'],
                   ' points ': [3, 4, 6, 8, 9, 10, 13, 16, 18, 20, 8, 9, 12, 13, 15]})

#view head of DataFrame
print ( df.head ())

  team points
0 to 3
1 to 4
2 to 6
3 to 8
4 to 9

示例 1:使用自定义订单的订单箱线图

以下代码显示如何创建箱线图来可视化每个团队的得分分布,并根据团队名称按以下顺序对箱线图进行排名:C、A、B。

 import seaborn as sns

#create boxplots with custom order
sns. boxplot (x=' team ', y=' points ', data=df, order=[' C ', ' A ', ' B '])

请注意,箱线图按照我们指定的确切顺序沿 x 轴排序。

示例 2:使用指标对箱线图进行排序

以下代码展示了如何创建箱线图来可视化每个团队的得分分布,并根据每个团队的平均得分按升序对箱线图进行排名:

 import seaborn as sns

#calculate mean points by team
mean_by_team = df. groupby ([' team '])[' points ']. mean (). sort_values (ascending= True )

#create boxplots ordered by mean points (ascending)
sns. boxplot (x=' team ', y=' points ', data=df, order=mean_by_team. index )

请注意,箱线图是根据每个团队的平均分值沿 x 轴升序排列的。

要按降序显示箱线图,只需在sort_values()函数中指定ascending=False

 import seaborn as sns

#calculate mean points by team
mean_by_team = df. groupby ([' team '])[' points ']. mean (). sort_values (ascending= False )

#create boxplots ordered by mean points (descending)
sns. boxplot (x=' team ', y=' points ', data=df, order=mean_by_team. index ) 

现在,箱线图根据每支球队的平均分值沿 x 轴降序排列。

注意:要根据不同的指标(例如中位数)对箱线图进行排序,只需在上面代码中的groupby()函数之后指定该指标即可。

其他资源

以下教程解释了如何在seaborn中执行其他常见功能:

如何从 Seaborn 箱线图中删除异常值
如何在 Seaborn 中创建多列箱线图

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注