Это как бы неявно в этом разделе цвет ячейки на основе переменной . Вот что я сделаю в вашем случае.
Данные
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({"name":["a", "b", "c", "d"],
"value":[100,20,30,40],
"output":["YES", "NO", "BORDERLINE", "NO"]})
map_color = {"YES":"green", "NO":"red", "BORDERLINE":"blue"}
df["color"] = df["output"].map(map_color)
cols_to_show = ["name", "value", "output"]
Где cols_to_show
- единственные столбцы, которые вы хотите показать в своей таблице.
Цвет заливки
Здесь вы хотите иметь стандартный фон ячейки во всех столбцах, кроме output
один
fill_color = []
n = len(df)
for col in cols_to_show:
if col!='output':
fill_color.append(['#e6f2fd']*n)
else:
fill_color.append(df["color"].to_list())
Таблица
data=[go.Table(
# columnwidth = [15,20,30],
header=dict(values=[f"<b>{col}</b>" for col in cols_to_show],
# fill_color='#b9e2ff',
line_color='darkslategray',
align='center',
font=dict(color='black', family="Lato", size=20),
height=30
),
cells=dict(values=df[cols_to_show].values.T,
fill_color=fill_color,
line_color='darkslategray',
align='left',
font=dict(color='black', family="Lato", size=20),
height=30
))
]
fig = go.Figure(data=data)
fig.show()
ОБНОВЛЕНИЕ
Изменить цвет текста
Если вы хотите изменить цвет текста
text_color = []
n = len(df)
for col in cols_to_show:
if col!='output':
text_color.append(["black"] * n)
else:
text_color.append(df["color"].to_list())
и
data=[go.Table(
# columnwidth = [15,20,30],
header=dict(values=[f"<b>{col}</b>" for col in cols_to_show],
# fill_color='#b9e2ff',
line_color='darkslategray',
align='center',
font=dict(color='black', family="Lato", size=20),
height=30
),
cells=dict(values=df[cols_to_show].values.T,
line_color='darkslategray',
align='left',
font=dict(color=text_color, family="Lato", size=20),
height=30
))
]
fig = go.Figure(data=data)
fig.show()