使用plotly.figure_factory绘制热图时数值字符串列显示异常求助
问题根因
plotly.figure_factory绘制热图时,会自动对传入的x轴(列字段)、y轴(行字段)做类型推断:如果字段值全部为数字格式的字符串,会被误识别为数值型坐标轴,导致单元格位置、标注内容和坐标轴标签的映射错位,最终出现显示异常;普通字符串会被正常识别为分类型坐标轴,所以渲染正常。
解决方案
- 方案1:显式指定坐标轴类型为分类
热图绘制完成后,更新布局强制x轴为分类类型,代码如下:import plotly.figure_factory as ff # 生成热图对象 fig = ff.create_annotated_heatmap( z=你的数值矩阵, x=你的列字段列表, # 元素为数字格式字符串 y=你的行字段列表 ) # 强制x轴为分类类型,若行字段也存在数字格式字符串问题,可同步添加yaxis={'type': 'category'}配置 fig.update_layout(xaxis={'type': 'category'}) fig.show() - 方案2:修改列字段避免自动类型推断
给每个数字格式的列字段追加不可见零宽空格,避免被识别为数值:# 处理列字段 processed_cols = [str(col) + '\u200b' for col in 原始列字段列表] # 绘制热图时传入处理后的列字段 fig = ff.create_annotated_heatmap( z=你的数值矩阵, x=processed_cols, y=你的行字段列表 ) fig.show() - 方案3:升级plotly到最新版本
旧版本plotly的自动类型推断逻辑存在缺陷,升级到最新版本可修复部分场景的问题:pip install --upgrade plotly
内容的提问来源于stack exchange,提问作者pidada
相关产品推荐
相关产品推荐

