2017-05-31 96 views
0

有没有什么方法可以改变Seaborn热图的单元尺寸? 我发现this但我无法按预期工作。Seaborn热图减小单元尺寸

所以,我在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) 
+0

您是否尝试过在你的'sns.heatmap'打电话? –

+0

@NathanWatkins感谢'平方= TRUE'说法!实际工作。你救了我日! –

+0

太棒了!如果您想将其标记为已回答,我会将其作为答案发布。 –

回答

0

尝试使用square=True参数在sns.heatmap电话。这将限制热图细胞方形纵横比。

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

您实际上不想更改单元格大小,但想要缩小轴的大小。方式来对这样的:

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