Seaborn热图如何调整水平colorbar位置使其更靠近热图底部
解决Seaborn热图水平色条距离过远的方法
你可以通过调整sns.heatmap的cbar_kws参数中的pad属性控制水平色条与热图的间距,pad数值越小,色条越靠近热图。
将你代码中绘制热图的部分修改为如下内容即可:
sns.heatmap(Granger2, cmap=rvb, cbar=True, ax=ax,linewidths=.5, cbar_kws={"orientation": "horizontal", "pad": 0.1})
pad的默认值约为0.15,你可以根据实际显示效果向下调整(比如设为0.08、0.05),直到间距符合预期。
如果调整pad后仍无法满足需求,你可以手动指定色条的坐标位置,完全自定义间距:
import seaborn as sns import matplotlib.pyplot as plt Granger2 = Granger Granger2.columns = Granger_colnames Granger2.index = Granger_rownames fig, ax = plt.subplots(figsize=(6,25)) # 先绘制热图,暂时不生成色条 sns.heatmap(Granger2, cmap=rvb, cbar=False, ax=ax,linewidths=.5) ax.xaxis.tick_top() # x轴放置在顶部 ax.xaxis.set_label_position('top') # 移除刻度线 ax.tick_params(axis='both', which='both', length=0) # 绘制边框 ax.axhline(y = 0, color='k',linewidth = 1) ax.axhline(y = Granger2.shape[0], color = 'k',linewidth = 1) ax.axvline(x = 0, color = 'k', linewidth = 1) ax.axvline(x = Granger2.shape[1], color = 'k', linewidth = 1) # 手动添加色条,自定义位置:[左边界, 下边界, 宽度, 高度],可按需调整数值 cbar_ax = fig.add_axes([0.2, 0.02, 0.6, 0.01]) fig.colorbar(ax.collections[0], cax=cbar_ax, orientation='horizontal') plt.show()
- 上述代码中
fig.add_axes的第二个参数为色条下边界的相对位置,数值越大,色条越靠近热图。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

