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

create_annotated_heatmap字符串转浮点数标注Bug及解决求助

解决Plotly create_annotated_heatmap轴标签类型混乱问题

针对你遇到的——带可转数字的字符串标签(如'1491')被强制转为浮点数,和其他字符串类别标签显示异常的问题,给你两个可行的解决办法:

方法1:手动重置轴的刻度配置

create_annotated_heatmap会自动将可解析为数值的标签转成数值类型,同时把普通字符串映射为0、1、2这类索引值。直接用update_yaxes(type='category')无效的原因是轴的刻度值已经被替换成了数值/索引,需要手动指定刻度值和显示文本:

import plotly.figure_factory as ff
import numpy as np

# 示例数据
z = np.random.rand(3, 3)
y_labels = ['1491', 'category_a', 'category_b']
x_labels = ['x1', 'x2', 'x3']

# 创建热力图
fig = ff.create_annotated_heatmap(z, y=y_labels, x=x_labels)

# 强制重置y轴刻度
fig.update_yaxes(
    tickmode='array',
    # 对应热力图内部使用的索引值
    tickvals=list(range(len(y_labels))),
    # 显示原始的字符串标签
    ticktext=y_labels,
    type='category'
)

fig.show()

方法2:给标签添加不可见字符,避免被解析为数值

给所有轴标签末尾添加一个零宽空格(\u200b),这样即使是纯数字格式的字符串,也会被Plotly识别为普通字符串类别,不会被转成数值:

import plotly.figure_factory as ff
import numpy as np

# 示例数据
z = np.random.rand(3, 3)
original_y_labels = ['1491', 'category_a', 'category_b']
# 给每个标签添加零宽空格
y_labels = [f"{label}\u200b" for label in original_y_labels]
x_labels = ['x1', 'x2', 'x3']

# 创建热力图,直接使用处理后的标签
fig = ff.create_annotated_heatmap(z, y=y_labels, x=x_labels)
fig.show()

这两种方法都能解决标签类型混乱导致的显示异常问题,你可以根据自己的场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:15:41