Стилізація таблиці ключових показників
Керівнику фінансового відділу дуже сподобалася таблиця ключових показників, яку ви раніше для нього створили. Однак, як великий прихильник Excel, він попросив додатково відформатувати таблицю.
Зокрема, він просить:
- Увесь вміст клітинок має бути вирівняний ліворуч.
- Тло клітинок має бути чорним, а текст — білим.
Ця вправа є частиною курсу
Створення дашбордів з Dash і Plotly
Інструкції до вправи
- Застосуйте стилі до всіх клітинок за допомогою параметра
cellStyleуdefaultColDefнижче рядка23. - Задайте ліве вирівнювання клітинок, використавши властивість
textAlignнижче рядка25. - Задайте клітинкам чорне тло та білий текст за допомогою властивостей
backgroundColorіcolorнижче рядка27.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)