Python 3.x 如何在同一图形上绘制两组箱线图?

Python 3.x 如何在同一图形上绘制两组箱线图?,python-3.x,matplotlib,seaborn,boxplot,Python 3.x,Matplotlib,Seaborn,Boxplot,假设我在下面有一个示例数据帧: Division Home Corners Away Corners Bundesliga 5 3 Bundesliga 5 5 EPL 7 4 EPL 3 2 League 1 10 6 Serie A 3

假设我在下面有一个示例数据帧:


Division   Home Corners  Away Corners  

Bundesliga   5                 3
Bundesliga   5                 5
EPL          7                 4
EPL          3                 2
League 1     10                6
Serie A      3                 3
Serie A      8                 2
League 1     3                 1

我想创建一个按除法分组的每场比赛总角球数的箱线图,但我希望主场角球和客场角球分开,但在同一个图上。类似于“色调”关键字的作用,但我如何实现

  • 使用以下命令将数据重塑为长格式:
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
数据={'Division':['Bundesliga'、'Bundesliga'、'EPL'、'EPL'、'League 1'、'意甲'、'League 1'],
“家庭角落”:[5,5,7,3,10,3,8,3],
“客场角球”:[3,5,4,2,6,3,2,1]}
df=pd.DataFrame(数据)
#将数据转换为长格式
df.set_索引('Division',in place=True)
dfl=df.stack().reset_index().rename(列={'level_1':'corners',0:'val'})
#密谋
sns.boxplot('corners','val',data=dfl,hue='Division')
plt.图例(title='Division',bbox_to_anchor=(1.05,1),loc='左上角')

  • 使用以下命令将数据重塑为长格式:
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
数据={'Division':['Bundesliga'、'Bundesliga'、'EPL'、'EPL'、'League 1'、'意甲'、'League 1'],
“家庭角落”:[5,5,7,3,10,3,8,3],
“客场角球”:[3,5,4,2,6,3,2,1]}
df=pd.DataFrame(数据)
#将数据转换为长格式
df.set_索引('Division',in place=True)
dfl=df.stack().reset_index().rename(列={'level_1':'corners',0:'val'})
#密谋
sns.boxplot('corners','val',data=dfl,hue='Division')
plt.图例(title='Division',bbox_to_anchor=(1.05,1),loc='左上角')

您可以
融化原始数据并使用
sns.boxplot

sns.boxplot(data=df.melt('Division', var_name='Home/Away', value_name='Corners'),
            x='Division', y='Corners',hue='Home/Away')
输出:


您可以
融化原始数据并使用
sns.boxplot

sns.boxplot(data=df.melt('Division', var_name='Home/Away', value_name='Corners'),
            x='Division', y='Corners',hue='Home/Away')
输出: