在 Plotly Dash 中,可以使用DataTable
的style_data_conditional
属性来有条件地更改单元格颜色。以下是一个示例,展示如何根据数据值来设置DataTable
中单元格的颜色:
import dash
import dash_table
import pandas as pd
# 生成示例数据
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 20],
'分数': [85, 92, 78]
}
df = pd.DataFrame(data)
app = dash.Dash(__name__)
app.layout = dash_table.DataTable(
id='table',
columns=[{'name': col, 'id': col} for col in df.columns],
data=df.to_dict('records'),
style_data_conditional=[
# 根据分数设置颜色,分数大于90为绿色,小于60为红色,否则为黄色
{
'if': {'column_id': '分数', 'filter_query': '{分数} > 90'},
'backgroundColor': 'lightgreen'
},
{
'if': {'column_id': '分数', 'filter_query': '{分数} < 60'},
'backgroundColor': 'lightcoral'
},
{
'if': {'column_id': '分数'},
'backgroundColor': 'lightyellow'
}
]
)
if __name__ == '__main__':
app.run_server(debug=True)
在上述代码中,通过style_data_conditional
属性来设置条件样式。每个条件是一个字典,其中if
键指定了条件,backgroundColor
键设置了满足条件时单元格的背景颜色。
'if': {'column_id': '分数', 'filter_query': '{分数} > 90'}
表示当列分数
中的值大于 90 时,将单元格背景颜色设置为浅绿色。'if': {'column_id': '分数', 'filter_query': '{分数} < 60'}
表示当列分数
中的值小于 60 时,将单元格背景颜色设置为浅珊瑚色。'if': {'column_id': '分数'}
表示对于列分数
中的所有单元格,如果不满足前面的条件,则将背景颜色设置为浅黄色。领取专属 10元无门槛券
手把手带您无忧上云