首页 > 解决方案 > 在seaborn中连接多个条形图

问题描述

我的数据框包含以下列标题:主题、组、MASQ_GDA、MASQ_AA、MASQ_GDD、MASQ_AD

我成功地使用具有以下规格的条形图绘制了其中一个:

bar_plot = sns.barplot(x="Group", y='MASQ_GDA', units="subject", ci = 68, hue="Group", data=demo_masq)

但是,我正在尝试并排创建几个这样的条形图。可能有人知道我如何做到这一点,因为每个图都包含剩余的 3 个变量(MASQ_AA、MASQ_GDD、MASQ_AD)。这是我要实现的目标的示例。在此处输入图像描述

标签: python-3.xbar-chartseaborn

解决方案


如果您查看文档sns.barplot(),您会看到该函数接受一个参数ax=,允许您告诉 seaborn 使用哪个 Axes 对象来绘制结果

ax :matplotlib 轴,可选

将绘图绘制到的 Axes 对象,否则使用当前 Axes。

因此,获得所需输出的简单方法是预先创建Axes,然后sns.barplot()使用相应的ax参数调用

fig, axs = plt.subplots(1,4)  # create 4 subplots on 1 row
for ax,col in zip(axs,["MASQ_GDA", "MASQ_AA", "MASQ_GDD", "MASQ_AD"]):
    sns.barplot(x="Group", y=col, units="subject", ci = 68, hue="Group", data=demo_masq, ax=ax)  # <- notice ax= argument

另一种选择,也许是更符合 seaborn 理念的选择是使用FacetGrid。这将允许您根据数据集中的类别数量自动创建所需数量的子图。但是,它需要重塑您的数据框,以便您的MASQ_*列的内容位于单个列上,并在一个新列中显示每个值对应的类别。


推荐阅读