在多模型对比实验中,常见的矩形热图会随模型与指标数量增加而出现两类问题:
环形热图(circular heatmap)通过极坐标下的同心环与角度扇区,将"指标—模型—数据集—数值"四级信息压缩到同一图面内。该结构最早见于基因组学与生物信息学领域,后被广泛迁移至机器学习模型对比与多准则决策场景(单图和组图均有)。

本文介绍的实现热力图采用如下编码方式:
设计原则:将比较关系的优先级置于坐标关系之上。
绘图逻辑的入口是结构化数据表,而非图形参数。数据Data.xlsx 需要 4 个字段:
Metric | ||
Model | ||
Dataset | ||
Value | ||
Metric_Order |
加载阶段进行列完整性校验,避免下游绘图因缺列而中断:
required = {"Metric", "Model", "Dataset", "Value"}missing = required.difference(df.columns)if missing:raise ValueError(f"Missing required columns in Data.xlsx: {sorted(missing)}")要点:数据结构的稳定性,是图形可复用性的前提。更换实验时仅需替换 Excel,绘图脚本无需调整。
环形热图的几何布局将信息组织为四个层级,按"指标 → 模型 → 数据集 → 数值"依次推进:
SECTOR_SPAN | ||
DATASET_GAP | ||
ROW_HEIGHT | ||
ROW_GAP | ||
TITLE_INNERTITLE_OUTER | ||
HOLE_RADIUS |
绘制扇区与中心留白的核心代码:
wedge = Wedge((0, 0), title_outer, start, end, width=title_outer - title_inner)ax.add_patch(wedge)ax.add_patch(Circle((0, 0), hole_radius, facecolor="white", edgecolor="none"))要点:中心留白承担视觉锚点(visual anchor)职能,承载主标题与色标,使主图、标题、图例三者互不干扰。
在环形布局中,注释信息需要在有限角度空间内保持稳定、清晰且不发生相互遮挡。
upright_rotation() 将任意极角下的文字旋转角度折回 [−90°, 90°] 区间,避免倒置:
defupright_rotation(angle_deg: float, offset: float = 0.0) -> float: rot = angle_deg + offsetwhile rot <= -90: rot += 180while rot > 90: rot -= 180return rot(TITLE_INNER + TITLE_OUTER) / 2 | ||
TRAIN_TEST_R | ||
text_color_for_rgba() 根据背景亮度切换前景色,采用 Rec. 709 相对亮度公式:
deftext_color_for_rgba(rgba) -> str: r, g, b, _ = rgba luminance = 0.2126 * r + 0.7152 * g + 0.0722 * breturn"white"if luminance < 0.55else"#3b3b3b"要点:文字旋转的目标不是追随曲线,而是在不同角度位置上维持一致的辨识效率。
颜色在该图中承担定量映射(quantitative mapping)职能,而非结构表达职能。映射过程分两步:
norm = Normalize(vmin=0.65, vmax=1.0) # 1. 归一化face = cmap(norm(value)) # 2. 颜色查表color = text_color_for_rgba(face) # 3. 字色适配Normalize(vmin=0.65, vmax=1.0) | |
cmap | |
text_color_for_rgba |
归一化区间的选择依据示例数据中各指标的取值范围。下界设为 0.65、上界设为 1.0,可同时容纳 AUC、Accuracy、F1 等典型机器学习评价指标的常见波动区间。
要点:颜色映射必须服从统一尺度,否则不同指标之间的比较将失去一致基准。
脚本内置 5 套配色方案,适配不同的发表语境。PALETTES 列表统一管理,新增配色仅需追加一行:
original | ||
viridis | ||
RdYlBu | ||
RdBu_r | ||
coolwarm |
代码按"数据层 → 工具层 → 绘图层 → 入口层"四层组织,职责互不交叉:
load_data 负责读取与校验 Data.xlsx;metric_order 依据 Metric_Order 列推导扇区角度顺序。upright_rotation 处理文字方向;text_color_for_rgba 处理字色对比度;model_rings 计算同心环的内外半径与中线;new_canvas 初始化极坐标画布。draw_title_bands 绘制外圈标题色带与指标名;draw_sector(含 label_dataset、label_model、draw_cells)逐扇区绘制数据;draw_center 处理中心白圆、标题与色标。build_figure 串联上述函数生成单张图形;main 加载数据并遍历配色方案输出图像。现在绘图代码都不支持免费获取了,欢迎加入小编科研绘图VIP群,298/年,所有科研绘图相关文章代码免费获取,联系小编,也可以更换为其他模型(比如RF、LGBM和XGBoost等定制修改)。涵盖机器学习模型(回归和分类)的shap分析、还有各种如皮尔逊分析等相关的图,以及期刊复现图,源代码直接复制或者打开就能绘图。同时进群赠送SHAP科研分析软件6.0(文本版)科研软件 | 基于机器学习+SHAP的科研分析软件(文本版,SHAP6.0)和 最优地理探测器软件最优地理探测器软件:从最优分类到交互探测的全流程可视化分析工具,且免费更新使用。VX:GISyanjiushengya