Dashでtableのフォントを条件にしたがって色分けしよう

DashでTableの数値の色分けをしてみやすく直感的にする

DashのTableコンポーネントで特定の条件を満たすセルのフォントの色を変更することは可能です。これは「conditional formatting」を使用して実現できます。Dash DataTableは、特定のデータに基づいてセルのスタイルを動的に変更するための機能を提供しています。

条件付きフォーマットを使用するには、style_data_conditionalプロパティを使用します。このプロパティは、特定の条件に基づいてセルのスタイルを設定するためのルールのリストを受け取ります。たとえば、特定の列の値がある数値以上または以下であれば、フォントの色を変更するルールを設定できます。

以下は、DashのDataTableで条件付きカラーリングを行う簡単な例です。この例では、'Value'列の値が100以上の場合に文字色を赤に、50以下の場合に青に変更します。

import dash
from dash import html
from dash import dcc
from dash.dependencies import Input, Output
import dash_table
import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "Name": ["Item A", "Item B", "Item C", "Item D"],
    "Value": [120, 80, 45, 30]
})

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': {
                    'filter_query': '{Value} >= 100',
                    'column_id': 'Value'
                },
                'color': 'red'
            },
            {
                'if': {
                    'filter_query': '{Value} <= 50',
                    'column_id': 'Value'
                },
                'color': 'blue'
            }
        ]
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

このコードは、'Value'列の値が100以上の行のフォント色を赤に、50以下の行のフォント色を青に変更します。style_data_conditionalの中で'if'キーを使用して、どのセルを変更するかの条件を指定します。filter_queryを使用して値の条件を設定し、column_idで対象の列を指定します。そして、colorで文字色を設定します。

Dash DataTableは非常に柔軟で、このようにセルごとのスタイリングを細かく制御できます。条件付きスタイリングを用いることで、ユーザーにとって重要なデータを視覚的に際立たせることができます。

コメント