Plotly Dash:单个单元格的数据表背景颜色

Zep*_*hyr 4 python datatable background-color plotly-dash

我在dash_table.DataTable数据框中显示,其中有一列颜色名称为十六进制格式,代码如下:

import dash
import dash_table
import pandas as pd

df = pd.DataFrame(data = dict(COLOR = ['#1f77b4', '#d62728', '#e377c2', '#17becf', '#bcbd22'],
                              VALUE = [1, 2, 3, 4, 5]))

app = dash.Dash(__name__)

app.layout = html.Div([dash_table.DataTable(id = 'table',
                                            columns = [{"name": i, "id": i} for i in df.columns],
                                            data = df.to_dict('records'))],
                      style = dict(width = '200px'))

if __name__ == '__main__':
    app.run_server()
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

在此输入图像描述

我想设置每个单元格及其内容的背景颜色(可能还有字体颜色),但仅限于该列(始终是表格的第一列)以获得以下结果:

在此输入图像描述

对我来说可以dash_table.DataTableplotly.graph_objects.Table文档)替换,这也许更可定制;plotly.graph_objects.Table前提是我可以在仪表板中实现dash

版本信息:

Python               3.7.0
dash                 1.12.0
dash-table           4.7.0
plotly               4.7.0
Run Code Online (Sandbox Code Playgroud)

Fla*_*ino 5

您可以使用 定义每个单元格的背景颜色和字体颜色(以及其他几个属性)style_data_conditional,请参阅https://dash.plotly.com/datatable/conditional-formatting

import dash
from dash import html,dash_table
import pandas as pd

df = pd.DataFrame(data=dict(COLOR=['#1f77b4', '#d62728', '#e377c2', '#17becf', '#bcbd22'],
                            VALUE=[1, 2, 3, 4, 5]))

app = dash.Dash(__name__)

app.layout = html.Div([

    dash_table.DataTable(
        id='table',
        columns=[{'name': i, 'id': i} for i in df.columns],
        data=df.to_dict('records'),
        style_data_conditional=[{'if': {'row_index': i, 'column_id': 'COLOR'}, 'background-color': df['COLOR'].iloc[i], 'color': df['COLOR'].iloc[i]} for i in range(df.shape[0])]
    ),

], style=dict(width='100px'))

if __name__ == '__main__':
    app.run_server()
Run Code Online (Sandbox Code Playgroud)