matplotlib Seaborn热图缩小像元大小

kupeojn6  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(189)

有什么方法可以改变Seaborn热图的单元格大小吗?我找到了this,但我不能让它像预期的那样工作。
因此,我在y轴标签中有长文本。由于所有文本都被截断,我想将热图的单元格尺寸缩小得更小。我不需要那个大矩形。(突出显示只是为了举例。)


(我隐藏了标签名称。)
当我改变图形大小时,

plt.figure(figsize=(8, 6)) or 
figure.set_size_inches(12, 12)

细胞也会变大,所以文本仍然被切断。
这里是代码。

sns.set(font_scale=1.2)
ax0 = plt.axes()
ax1 = sns.heatmap(hmap, cbar=0, cmap="YlGnBu",linewidths=2, ax=ax0,vmax=3000, vmin=0)
ax1.set_title('test heatmap')

for item in ax1.get_yticklabels():
    item.set_rotation(0)

for item in ax1.get_xticklabels():
    item.set_rotation(0)

figure = plt.gcf()  # get current figure
figure.set_size_inches(12, 12)
plt.savefig('test.png') , dpi=400)
x759pob2

x759pob21#

尝试在sns.heatmap调用中使用square=True参数。这会将热图单元格限制为方形长宽比。

ax1 = sns.heatmap(hmap, cbar=0, cmap="YlGnBu",linewidths=2, ax=ax0,vmax=3000, vmin=0, square=True)
fd3cxomn

fd3cxomn2#

实际上,您并不想更改单元格的大小,而是想缩小轴的大小。方法:

  • 使用plt.tight_layout()
  • 为侧面提供更多空间,例如通过fig.subplots_adjust(left=0.4)
  • 创建一个轴,其大小为您想要的ax1 = fig.add_axes([0.4,0.2,0.5,0.6])(其中数字为[left, bottom, width, height],并使用此轴绘制热图sns.heatmap(... , ax=ax1)

相关问题