python-3.x - 在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)。这是我要实现的目标的示例。
解决方案
如果您查看文档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_*
列的内容位于单个列上,并在一个新列中显示每个值对应的类别。