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

Plotly表格字体颜色设置异常求助:仅需高亮值>80的指定列

问题排查与修正方案

你的代码问题出在颜色规则的数组长度与表格列数不匹配,以及颜色判断逻辑未对应到目标列:

  • 你仅针对4个百分比列生成了颜色列表,但表格共有6列,Plotly会循环复用该颜色数组,导致前两列(SYSTEM_ID、MVS_SYSTEM_ID)被错误染色。
  • 原代码按行遍历4个百分比列的值生成颜色,未对应到每一列的独立单元格,导致判断逻辑错位,出现小于80的值变蓝的情况。

修正后的代码

import pandas as pd
import plotly.graph_objs as go

data = {
    'SYSTEM_ID': ['XPTO', 'XPTO', 'XPTO', 'XPTX', 'XPTX', 'THE_FIRM', 'THE_FIRM', 'THE_FIRM'],
    'MVS_SYSTEM_ID': ['XPTO', 'XPTB', 'XRNA', 'ZZZZ', 'CCCC', 'NABD', 'XXXX', 'YYYY'],
    'MAX_CSA_USED%': [60.47, 71.41, 70.93, 35.14, 32.26, 24.1, 31.56, 22.81],
    'MAX_ECSA_USED%': [51.46, 81.9, 53.8, 35.02, 34.87, 37.47, 40.88, 14.17],
    'MAX_SQA_USED%': [42.52, 33.64, 42.23, 45.05, 40.61, 33.7, 25.39, 29.67],
    'MAX_ESQA_USED%': [56.26, 53.55, 57.13, 34.17, 46.38, 91.31, 33.06, 77.12]
}

table_df = pd.DataFrame(data)
table_columns = ['SYSTEM_ID', 'MVS_SYSTEM_ID', 'MAX_CSA_USED%', 'MAX_ECSA_USED%', 'MAX_SQA_USED%', 'MAX_ESQA_USED%']

# 为每一列生成独立的颜色规则
color_list = []
fill_color_list = []

for col in table_columns:
    if col in ['MAX_CSA_USED%', 'MAX_ECSA_USED%', 'MAX_SQA_USED%', 'MAX_ESQA_USED%']:
        # 目标列:根据值是否大于80设置颜色
        font_colors = ['blue' if val > 80 else 'black' for val in table_df[col]]
        fill_colors = ['lightblue' if val > 80 else 'white' for val in table_df[col]]
        color_list.append(font_colors)
        fill_color_list.append(fill_colors)
    else:
        # 非目标列:固定黑色字体、白色背景
        color_list.append(['black'] * len(table_df))
        fill_color_list.append(['white'] * len(table_df))

table_fig = go.Figure(data=[go.Table(
    header=dict(values=table_columns),
    cells=dict(
        values=[table_df[col] if col not in ['MVS_SYSTEM_ID', 'SYSTEM_ID'] else table_df[col].astype(str) for col in table_columns],
        align=['center', 'center', 'right', 'right', 'right', 'right'],
        font=dict(color=color_list),
        fill=dict(color=fill_color_list)
    )
)])

table_fig.show()

关键改动说明

  1. 列级独立颜色规则:遍历每一列,为目标百分比列单独生成颜色数组,非目标列固定使用黑色字体和白色背景,避免颜色规则被循环复用。
  2. 单元格精准判断:针对每个目标列的单元格逐个判断值是否大于80,确保颜色规则仅作用于符合条件的单元格。
  3. 对齐参数补全:为6列分别设置对齐方式,避免默认值导致的布局错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:24