我有一个熊猫数据框: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()