matplotlib 如何控制catplot中各个子地块的轴

63lcw9qa  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(89)

考虑以下数据:

df = pd.DataFrame([['green','tree',2],
                   ['green','leaf',3],
                   ['red','tomato',1],
                   ['red','pepper',5],
                   ['red','apple', 1]], columns=['color', 'object', 'value'])

dataframe看起来像这样:

我想使用seaborn.catplot生成各种类别的条形图:

sns.catplot(data=df, kind='bar', x='object', y='value', col='color');

但是,我想排除不属于给定类别的对象(即在第一个图中,我想排除'tomato''pepper''apple',而在第二个图中,我想排除'tree''leaf')。我如何才能做到这一点?

mqkwyuun

mqkwyuun1#

一种方法是使用seaborn的条形图。我根据你的情况创建了两个新专栏。然后,您可以使用for设置标题,例如ax1.set_title

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 3))

mask = (df.color == 'green')

sns.barplot(x='object', y='value', data=df[mask], ax=ax1)
sns.barplot(x='object', y='value', data=df[~mask], ax=ax2)

ax1.set_title("color=green")
ax2.set_title("color=red")

您也可以使用catplot,但这会生成额外的图形,然后需要关闭这些图形。

sns.catplot(data=df[mask], kind='bar', x='object', y='value', col='color', ax=ax1);
sns.catplot(data=df[~mask], kind='bar', x='object', y='value', col='color', ax=ax2);

相关问题