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

Plotly中为热力图每行设置独立颜色范围的实现方案

解决方案:实现每行独立颜色映射的热力图

问题核心是Plotly默认使用全局颜色范围,只有全局最大值会显示绿色。要实现类似Excel每行独立条件格式的效果,需要先对每行数据做归一化处理,将每行数值缩放到0-1区间,让每行的最高值对应颜色刻度的最大值(绿色),最低值对应最小值(红色)。

步骤与代码实现

  1. 读取原始CSV数据
  2. 对每行独立归一化:按自身的最小值和最大值将数据缩放到0-1区间,同时处理整行数值相同的边界情况(避免除以0报错)
  3. 绘制热力图:用归一化后的数据绘图,同时绑定原始数据到hover提示,保留真实数值查看能力

完整代码:

import plotly.express as px
import pandas as pd

# 读取CSV数据
df = pd.read_csv('test0.csv', header=None)

# 每行独立归一化处理
df_normalized = df.apply(
    lambda row: (row - row.min()) / (row.max() - row.min()) if row.max() != row.min() else 0,
    axis=1
)

# 绘制热力图,绑定原始数据到hover提示
fig = px.imshow(
    df_normalized,
    color_continuous_scale=['red', 'green'],
    hover_data=df.values.tolist()
)

# 隐藏颜色刻度条
fig.update_coloraxes(showscale=False)

# 自定义hover提示格式,显示原始数值
fig.update_traces(
    hovertemplate='小时: %{x}<br>星期: %{y}<br>数值: %{customdata}<extra></extra>'
)

fig.show()

效果说明

  • 每行的最高值都会显示绿色,最低值显示红色,中间值按比例过渡颜色
  • Hover提示会显示原始真实数值,不会因归一化丢失信息
  • 兼容整行数值相同的边界场景,避免运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:15:26