Python 使用子地块时,Seaborn热图宽度不匹配
我正在尝试将第二个子批次(使用二进制cmap的列和)的宽度调整为第一个子批次 到目前为止,我只是通过随机选择不同的figsize来做到这一点,但每次我试图在不同大小的数据集上重复使用代码时,我总是会想到下面的图片(第二个热图总是比第一个更宽) 我是否缺少自动调整第二个的功能Python 使用子地块时,Seaborn热图宽度不匹配,python,matplotlib,sum,seaborn,heatmap,Python,Matplotlib,Sum,Seaborn,Heatmap,我正在尝试将第二个子批次(使用二进制cmap的列和)的宽度调整为第一个子批次 到目前为止,我只是通过随机选择不同的figsize来做到这一点,但每次我试图在不同大小的数据集上重复使用代码时,我总是会想到下面的图片(第二个热图总是比第一个更宽) 我是否缺少自动调整第二个的功能 问题是在sns.heatmap中使用square=True。由于两个子地块的纵横比是宽与高,因此“平方”的方式对于每一个子地块都是不同的。第一,它变薄了,第二,它变短了。这样做是为了适应子地块轴大小的约束,当您调用plt.
问题是在
sns.heatmap
中使用square=True
。由于两个子地块的纵横比是宽与高,因此“平方”的方式对于每一个子地块都是不同的。第一,它变薄了,第二,它变短了。这样做是为了适应子地块轴大小的约束,当您调用plt.subplot
时,子地块轴的大小默认为相等
fig, (ax1, ax2) = plt.subplots(2,1, figsize=(10,15), gridspec_kw={'height_ratios':[5, 1]})
解决这个问题的一种方法是定义两个轴的纵横比,使其不同并适合数据的形状。这不会在100%的时间内奏效,但在大多数情况下会奏效。您可以使用关键字gridspec\u kw
并在调用plt.subplot
时定义一个具有'height\u ratio'
的字典
fig, (ax1, ax2) = plt.subplots(2,1, figsize=(10,15), gridspec_kw={'height_ratios':[5, 1]})
如果我想在下面添加第二个水平热图怎么办?#创建figure fig,(ax1,ax2,ax3)=plt.子图(3,1,figsize=(27,17),gridspec_kw={'height_ratios':[18,1]})显示错误消息:ValueError:预期给定的高度比数量与gridspec_kw={'height_ratios':[18,1]})匹配得到它,在gridspec kw={'height_ratios':[18,1]})中再添加一个1)