首页 文章

Seaborn热图减少了细胞大小

提问于
浏览
0

有没有办法改变Seaborn热图的细胞大小?我找到this但是我无法按预期工作 .

所以,我在y轴标签上有很长的文字 . 由于所有文本都被删除了,我想将热图的单元尺寸缩小得更小 . 我不需要那个大矩形 . (仅举例说明 . )

enter image description here
(我隐藏了标签名称 . )

当我改变数字大小时,

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)

2 回答

  • 2

    尝试在 sns.heatmap 调用中使用 square=True 参数 . 这将热图单元限制为方形纵横比 .

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

    您实际上并不想更改单元格大小,而是希望缩小轴的大小 . 方法如下:

    • 使用 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) .

相关问题