Python如何设置图像热图图例:将垂直图例上移至行中心并配置大字号
热图配置实现方案
需求落地逻辑
- 垂直色条启用:替换原代码中关闭色条的
cbar=False参数为启用状态,采用独立轴控方式规避自动布局带来的位置偏差 - 色条位置校准:手动指定色条轴的坐标参数,将色条整体上移,使几何中心与热图行区域的中心对齐
- 超大字体适配:分层配置全图各场景的文字大小,覆盖单元格标注、坐标轴刻度、色条刻度三类文本,无字号遗漏
调整后完整可运行代码
import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 热图原始数据与带误差范围的自定义标注 labels_raw = np.array([["98.75\n±0.50", "1.25\n±0.82"], ["1.32\n±0.74", "98.68\n±0.74"]]) cm_raw = np.array([[98.75, 1.25], [1.32, 98.68]]) target_names = ['test1', 'test2'] # 全局超大字体基础配置 sns.set(font_scale=3) fig, ax = plt.subplots(figsize=(6, 5)) # 手动创建垂直色条轴,参数格式为 [左边界, 下边界, 轴宽度, 轴高度] # 通过调整下边界与高度实现色条上移,对齐热图行中心 cbar_ax = fig.add_axes([0.83, 0.36, 0.04, 0.3]) # 绘制热图 f = sns.heatmap( cm_raw, annot=labels_raw, fmt=':^', xticklabels=target_names, yticklabels=target_names, annot_kws={"size": 28}, # 单元格内标注的超大字号 cbar=True, cbar_ax=cbar_ax, cbar_kws={"ticks": [1, 25, 50, 75, 99]} # 适配数值范围的色条刻度 ) # 调整坐标轴刻度字体大小 ax.tick_params(axis='both', labelsize=22) # 调整色条刻度字体大小 cbar_ax.tick_params(labelsize=20) # 全局布局调整,为右侧色条预留空间,避免元素挤压 plt.tight_layout(rect=[0, 0, 0.8, 1]) plt.show()
微调参考:若需进一步调整色条位置,可直接修改
cbar_ax初始化时的坐标参数:第二个参数控制色条的垂直起始位置,数值越大色条位置越靠上;第四个参数控制色条总高度。字体大小可根据最终导出的画布尺寸,按统一比例放大各场景的字号参数,保持视觉协调。
内容的提问来源于stack exchange,提问作者Olaf
相关产品推荐
相关产品推荐

