Estilizando uma tabela de estatísticas-chave
O chefe do departamento financeiro adorou a tabela de estatísticas-chave que você criou anteriormente. Porém, como é um grande fã do Excel, ele pediu algumas formatações adicionais na tabela.
Especificamente, ele solicitou:
- Todo o conteúdo das células deve ficar alinhado à esquerda.
- O fundo das células deve ser preto, com o texto em branco.
Este exercício faz parte do curso
Construindo Dashboards com Dash e Plotly
Instruções do exercício
- Aplique estilos a todas as células usando o parâmetro
cellStyleemdefaultColDefabaixo da linha23. - Estilize as células para ficarem alinhadas à esquerda usando a propriedade
textAlignabaixo da linha25. - Estilize as células com fundo preto e texto branco usando as propriedades
backgroundColorecolorabaixo da linha27.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
from dash import Dash, dcc, html, Input, Output, callback
import plotly.express as px
import pandas as pd
from dash_ag_grid import AgGrid
ecom_sales = pd.read_csv('/usr/local/share/datasets/ecom_sales.csv')
logo_link = 'https://assets.datacamp.com/production/repositories/5893/datasets/fdbe0accd2581a0c505dab4b29ebb66cf72a1803/e-comlogo.png'
key_stats_tb = ecom_sales.groupby(['Country','Major Category', 'Minor Category'])['OrderValue'].agg(['sum', 'count', 'mean']).reset_index().rename(columns={'count':'Sales Volume', 'sum':'Total Sales ($)', 'mean':'Average Order Value ($)'})
money_fmt = {"function": ("params.value.toLocaleString('en-US', {style: 'currency', currency: 'USD'})")}
column_defs = [
{"field": "Country"},
{"field": "Major Category"},
{"field": "Minor Category"},
{"field": "Total Sales ($)", "valueFormatter": money_fmt},
{"field": "Average Order Value ($)", "valueFormatter": money_fmt},
{"field": "Sales Volume"},
]
grid = AgGrid(
columnDefs=column_defs,
rowData=key_stats_tb.to_dict("records"),
defaultColDef={
# Apply styling to all cells
"____": {
# Style content aligned left
"____": "____",
# Style background color and text color
"____": "____",
"____": "____"}}
)
app = Dash()
app.layout = [
html.Img(src=logo_link, style={'margin':'30px 0px 0px 0px' }),
html.H1('Sales Aggregations'),
html.Div([
html.H2('Key Aggregations'),
grid],
style={'width':'850px', 'height':'750px', 'margin':'0 auto'}
)
]
if __name__ == '__main__':
app.run(debug=True)