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

Python Plotly.figure_factory热力图annotation_text坐标错位问题

问题修复方案

根本原因

plotly的ff.create_annotated_heatmap会自动推断坐标轴类型,你的x轴参数同时包含非数字字符串和纯数字字符串,函数错误将x轴判定为线性数值轴:纯数字的x标签会被解析为对应数值作为实际坐标,这些数值远大于分类的默认索引值,导致对应注释全部偏移挤到画布右侧,仅首尾非纯数字的分类注释位置正常。

修复方法

在原有更新坐标轴的代码中,显式指定x轴类型为category即可,修改后的完整代码如下:

import numpy as np
import plotly.express as px # 原有代码遗漏该导入,调用px.colors需先导入
import plotly.figure_factory as ff

z=np.array([[30.0, 15.0, 14.72899729, 7.72994652, 19.61096606, 15.49867374, 19.85271318, 30.0],
         [30.0, 15.0, 22.36842105, 4.80104712, 20.99742268, 21.51211073, 23.5408971, 0.0],
         [30.0, 15.0, 7.5, 0.0, 0.0, 0.0, 10.63095238, 30.0]])
y = ['Ref:14973', 'Ref:17746', 'Ref:21846']
x = ['MN908947.3', '2361', '2371', '2373', '2374', '2375', '2376', 'Warnings']
z_text = np.array([['G','A', 'A', 'N', 'A', 'A', 'A', ','],
                 ['C', 'C', 'T', 'N', 'T', 'T', 'C', ',hp'],
                 ['C', 'N', 'N', 'N', 'N', 'N', 'T', ',']])
fig = ff.create_annotated_heatmap(
    z, x=x,y=y,
    annotation_text=z_text,
    colorscale=px.colors.diverging.RdYlGn,
    font_colors=['black'],
    showscale=True,
    customdata= dft44, # 请确保dft44的shape和z完全一致
    hovertemplate= "Sample: %{x} <br>Position: %{y} <br>Score: %{z} <br>BAM: %{customdata}")
fig.update_yaxes(
        title_text = "Pos",
        title_standoff = 25)
# 新增这一行指定x轴为分类轴即可解决注释错位问题
fig.update_xaxes(type='category')
fig.show()

补充说明

如果修改后仍存在轻微的注释偏移,可以额外添加以下代码,强制注释适配单元格大小:

fig.update_annotations(constraintext="tight")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:39:00