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

Plotly循环生成热力图后如何将所有图表整合到单个子图展示?

关于Plotly批量展示带标注热力图到子图的解答

你描述的实现方案完全可行,这也是Plotly生态下批量对比同类型参数化图表的常用方案。具体实现步骤如下:

实现步骤

  • 第一步:循环生成热力图存入列表
    你可以直接初始化空列表figure_list = [],在嵌套循环中调用ff.create_annotated_heatmap生成单张热力图后,执行figure_list.append(fig)存入列表即可,无需额外修改原有生成单图的逻辑。
  • 第二步:创建子图画布
    导入plotly.subplots中的make_subplots方法,根据你生成的热力图总数量,提前规划子图的行数、列数,示例代码如下:
    from plotly.subplots import make_subplots
    import plotly.figure_factory as ff
    
    # 示例:总共生成12张热力图,规划为3行4列的子图布局
    total_figs = len(figure_list)
    rows = 3
    cols = 4
    # 可按需设置子图标题、间距等参数
    fig_subplot = make_subplots(rows=rows, cols=cols, subplot_titles=[f"参数组{i+1}" for i in range(total_figs)])
    
  • 第三步:批量将热力图添加到子图对应位置
    这里需要注意:ff.create_annotated_heatmap生成的内容包含两部分,一是热力图本身的trace轨迹,二是自带的数值标注(属于figure级别的annotations配置),需要分别做适配处理避免标注错位:
    for idx, fig in enumerate(figure_list):
        # 计算当前图对应的子图行、列位置
        current_row = idx // cols + 1
        current_col = idx % cols + 1
        # 添加热力图轨迹
        fig_subplot.add_trace(fig.data[0], row=current_row, col=current_col)
        # 适配标注的坐标轴引用
        for annot in fig.layout.annotations:
            annot.update(xref=f"x{current_col}", yref=f"y{current_row}")
            fig_subplot.add_annotation(annot)
    # 调整布局后展示
    fig_subplot.update_layout(height=800, width=1600, title_text="多参数热力图对比")
    fig_subplot.show()
    

注意事项

  • 如果所有热力图的x轴、y轴取值一致,可以在make_subplots中设置shared_xaxes=True、shared_yaxes=True,减少冗余标签,提升对比效率
  • 热力图数量较多时,可以适当调整make_subplots的horizontal_spacing、vertical_spacing参数,避免子图间拥挤
  • 可以统一给所有子图设置相同的色阶范围,避免不同热力图色阶不一致导致的对比误差

内容的提问来源于stack exchange,提问作者Jibril

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:00