Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用子地块时,Seaborn热图宽度不匹配_Python_Matplotlib_Sum_Seaborn_Heatmap - Fatal编程技术网

Python 使用子地块时,Seaborn热图宽度不匹配

Python 使用子地块时,Seaborn热图宽度不匹配,python,matplotlib,sum,seaborn,heatmap,Python,Matplotlib,Sum,Seaborn,Heatmap,我正在尝试将第二个子批次(使用二进制cmap的列和)的宽度调整为第一个子批次 到目前为止,我只是通过随机选择不同的figsize来做到这一点,但每次我试图在不同大小的数据集上重复使用代码时,我总是会想到下面的图片(第二个热图总是比第一个更宽) 我是否缺少自动调整第二个的功能 问题是在sns.heatmap中使用square=True。由于两个子地块的纵横比是宽与高,因此“平方”的方式对于每一个子地块都是不同的。第一,它变薄了,第二,它变短了。这样做是为了适应子地块轴大小的约束,当您调用plt.

我正在尝试将第二个子批次(使用二进制cmap的列和)的宽度调整为第一个子批次

到目前为止,我只是通过随机选择不同的figsize来做到这一点,但每次我试图在不同大小的数据集上重复使用代码时,我总是会想到下面的图片(第二个热图总是比第一个更宽)

我是否缺少自动调整第二个的功能


问题是在
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)