无法使用matplotlib重新创建catplot

时间:2019-09-11 14:09:25

标签: python pandas matplotlib seaborn

我有一个熊猫数据框:

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

1 个答案:

答案 0 :(得分:2)

没有直接等价的内容,因为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()