我有一个熊猫数据框:

df = pd.DataFrame(data = {'X':['Jason', 'Molly', 'Tina', 'Jason', 'Tina', 'Tina'], 'Y': [13,19,52,14,12,12]})

       X   Y
0  Jason  13
1  Molly  19
2   Tina  52
3  Jason  14
4   Tina  12
5   Tina  12


我想在matplotlib中重新创建seaborn库的catplot功能,例如:

sns.catplot(x='X', y='Y', kind="box", data=df)


所以我做:

plt.boxplot(df.X, df.Y)


但这不起作用,我得到一个错误:


  TypeError:无法使用灵活类型执行归约


如何在matplotlib中获得相同的结果?

我在matplotlib中这样做,因为对于seaborn,我必须手动更改x,并且我想使用for循环动态更改x

最佳答案

没有直接等效项,因为seaborn首先将数据按x分组。使用matplotlib时,您需要手动进行分组,

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(data = {'X':['Jason', 'Molly', 'Tina', 'Jason', 'Tina', 'Tina'],
                          'Y': [13,19,52,14,12,12]})

plt.boxplot([col.Y.values for n, col in df.groupby("X")])
plt.show()

10-06 06:12