You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 20:15:05