无法使用matplotlib重新创建catplot

2024-06-01 08:28:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

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: cannot perform reduce with flexible type

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

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


Tags: 数据功能boxdataframedfdatamatplotlibseaborn
1条回答
网友
1楼 · 发布于 2024-06-01 08:28:48

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

相关问题 更多 >