如何为matplotlib的colorbar(颜色条)添加黑色外边框
解决seaborn heatmap指定colorbar轴边框不显示问题
问题原因
seaborn在调用heatmap方法生成颜色条时,会默认重置颜色条所属坐标轴的边框属性,同时颜色条自身的外边框默认处于隐藏状态,直接操作ax1.spines不会生效。
解决方案
有两种常用实现方式,推荐直接通过cbar_kws参数配置颜色条属性,更简洁不易出错:
方式1:通过cbar_kws直接配置颜色条边框(推荐)
修改heatmap调用参数,增加cbar_kws配置项,指定边框颜色和粗细即可:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df = pd.DataFrame(np.random.randn(10, 2), columns=list('AB')) fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(10, len(df) / 5.2), gridspec_kw={'width_ratios': [15, 15]}) # 新增cbar_kws参数配置颜色条边框 sns.heatmap( df, annot=False, cmap='RdYlGn', cbar_ax=ax1, ax=ax0, cbar_kws={"edgecolor": "black", "linewidth": 1} ) # 热力图边框设置 for _, spine in ax0.spines.items(): spine.set_visible(True) spine.set_color("black") spine.set_linewidth(1) plt.show()
方式2:操作ax1坐标轴边框
如果需要直接操作坐标轴spines,需要在配置完spines可见后,额外设置边框颜色和粗细:
# 接原有sns.heatmap调用代码后 for _, spine in ax1.spines.items(): spine.set_visible(True) spine.set_color("black") spine.set_linewidth(1)
两种方式都可以实现colorbar黑色外边框的显示效果,按需选择即可。
内容的提问来源于stack exchange,提问作者Amit V
相关产品推荐
相关产品推荐

