Python:如何并排绘制多个海生热图?

Python:如何并排绘制多个海生热图?,python,plot,seaborn,Python,Plot,Seaborn,我有一个具有20多个功能的熊猫数据帧。我想看看它们的相关矩阵。我使用如下代码创建热图,包括subset1、subset2等: import seaborn as sns cmap = sns.diverging_palette( 220 , 10 , as_cmap = True ) sb1 = sns.heatmap( subset1.corr(), cmap = cmap, square=True, cbar_kws={ 'shrink' : .9 },

我有一个具有20多个功能的熊猫数据帧。我想看看它们的相关矩阵。我使用如下代码创建热图,包括
subset1
subset2
等:

import seaborn as sns
cmap = sns.diverging_palette( 220 , 10 , as_cmap = True )
sb1 = sns.heatmap(
    subset1.corr(), 
    cmap = cmap,
    square=True, 
    cbar_kws={ 'shrink' : .9 }, 
    annot = True, 
    annot_kws = { 'fontsize' : 12 })
我希望能够并排显示由上述代码生成的多个热图,如下所示:

逐侧显示(sb1、sb2、sb3等)

我不知道该怎么做,因为上面的第一个代码块不仅将结果保存到
sb1
,而且还绘制了热图。另外,不知道如何编写函数,
display\u-side\u by\u-side()
。我使用以下数据帧:

# create a helper function that takes pd.dataframes as input and outputs pretty, compact EDA results
from IPython.display import display_html
def display_side_by_side(*args):
    html_str = ''
    for df in args:
        html_str = html_str + df.to_html()
    display_html(html_str.replace('table','table style="display:inline"'),raw=True)

根据Simas Joneliunas的以下第一个答案,我提出了以下有效解决方案:

import matplotlib.pyplot as plt
import seaborn as sns

# Here we create a figure instance, and two subplots
fig = plt.figure(figsize = (20,20)) # width x height
ax1 = fig.add_subplot(3, 3, 1) # row, column, position
ax2 = fig.add_subplot(3, 3, 2)
ax3 = fig.add_subplot(3, 3, 3)
ax4 = fig.add_subplot(3, 3, 4)
ax5 = fig.add_subplot(3, 3, 5)

# We use ax parameter to tell seaborn which subplot to use for this plot
sns.heatmap(data=subset1.corr(), ax=ax1, cmap = cmap, square=True, cbar_kws={'shrink': .3}, annot=True, annot_kws={'fontsize': 12})
sns.heatmap(data=subset2.corr(), ax=ax2, cmap = cmap, square=True, cbar_kws={'shrink': .3}, annot=True, annot_kws={'fontsize': 12})
sns.heatmap(data=subset3.corr(), ax=ax3, cmap = cmap, square=True, cbar_kws={'shrink': .3}, annot=True, annot_kws={'fontsize': 12})
sns.heatmap(data=subset4.corr(), ax=ax4, cmap = cmap, square=True, cbar_kws={'shrink': .3}, annot=True, annot_kws={'fontsize': 12})
sns.heatmap(data=subset5.corr(), ax=ax5, cmap = cmap, square=True, cbar_kws={'shrink': .3}, annot=True, annot_kws={'fontsize': 12})

您应该查看matplotlib.add_子图:

# Here we create a figure instance, and two subplots
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)

# We use ax parameter to tell seaborn which subplot to use for this plot
sns.pointplot(x="x", y="y", data=data, ax=ax1)

哦,这对你有帮助吗?也许你想接受这个答案?