seaborn双colorbar热力图左侧Blues色条重叠热力图如何调整位置
seaborn双热力图左侧色条重叠调整方法
问题说明
在同一坐标轴绘制两组独立数据集的seaborn热力图,为两组数据配置独立colorbar时,放置在左侧、使用Blues配色的色条与热力图主绘图区域发生重叠,需要将色条向左微调增加间距。
问题复现代码
fig, ax = plt.subplots(1,figsize = (8,9)) sb.heatmap(data = df1, linewidth = 0.0, vmin=0, cmap = 'Blues', cbar_kws = dict(use_gridspec = False, location = "left"), robust = False) sb.heatmap(data = df2, linewidth = 0.0, vmin=0, cmap = 'Reds', robust = False) cbar1 = ax.collections[0].colorbar cbar2 = ax.collections[1].colorbar plt.show()
重叠效果参考

解决方法
- 方法一(推荐):直接在左侧色条的
cbar_kws配置中新增pad参数控制间距
当设置use_gridspec=False时,pad参数专门用于控制色条与主绘图区的距离,数值越大间距越宽,常规设置0.08~0.12即可解决重叠问题,适配不同画布尺寸的稳定性更好。
调整后的核心代码:sb.heatmap(data = df1, linewidth = 0.0, vmin=0, cmap = 'Blues', cbar_kws = dict(use_gridspec = False, location = "left", pad=0.1), robust = False) - 方法二:手动修改色条坐标轴位置实现精细偏移
如果需要自定义偏移幅度,可以在获取色条对象后,直接调整色条对应坐标轴的左边界坐标,数值越小色条越靠左。
代码示例:cbar1 = ax.collections[0].colorbar # 读取当前色条轴的位置参数:[左边界, 下边界, 宽度, 高度] current_pos = cbar1.ax.get_position() # 左边界数值减0.06即向左偏移0.06个单位,可根据实际效果微调 cbar1.ax.set_position([current_pos.x0 - 0.06, current_pos.y0, current_pos.width, current_pos.height])
内容的提问来源于stack exchange,提问作者Chris Worth
相关产品推荐
相关产品推荐

