teste1 / app.py
Programer123's picture
Upload app.py
1171d6b verified
raw
history blame
2.68 kB
from dash import Dash, html, dcc, Input, Output, dash_table
import dash_bootstrap_components as dbc
import pandas as pd
import plotly.express as px
df = pd.DataFrame({
"Categoria": ["A", "B", "C", "D", "E"],
"Vendas": [120, 200, 150, 80, 220],
"Lucro": [30, 70, 40, 20, 90]
})
app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.layout = dbc.Container([
html.H1("Dashboard em Dash", className="my-4"),
dbc.Row([
dbc.Col([
html.Label("Escolhe a métrica:"),
dcc.Dropdown(
id="coluna-dropdown",
options=[
{"label": "Vendas", "value": "Vendas"},
{"label": "Lucro", "value": "Lucro"}
],
value="Vendas",
clearable=False
)
], md=4)
], className="mb-4"),
dbc.Row([
dbc.Col(dbc.Card([
dbc.CardBody([
html.H4("Total", className="card-title"),
html.H2(id="total-card")
])
]), md=4),
dbc.Col(dbc.Card([
dbc.CardBody([
html.H4("Média", className="card-title"),
html.H2(id="media-card")
])
]), md=4),
dbc.Col(dbc.Card([
dbc.CardBody([
html.H4("Máximo", className="card-title"),
html.H2(id="max-card")
])
]), md=4),
], className="mb-4"),
dbc.Row([
dbc.Col([
dcc.Graph(id="grafico-barras")
], md=8),
dbc.Col([
dash_table.DataTable(
id="tabela",
columns=[{"name": i, "id": i} for i in df.columns],
data=df.to_dict("records"),
style_table={"overflowX": "auto"},
style_cell={"textAlign": "center"},
page_size=5
)
], md=4)
])
], fluid=True)
@app.callback(
Output("grafico-barras", "figure"),
Output("total-card", "children"),
Output("media-card", "children"),
Output("max-card", "children"),
Input("coluna-dropdown", "value")
)
def atualizar_dashboard(coluna_escolhida):
fig = px.bar(
df,
x="Categoria",
y=coluna_escolhida,
color="Categoria",
title=f"{coluna_escolhida} por Categoria"
)
total = df[coluna_escolhida].sum()
media = round(df[coluna_escolhida].mean(), 2)
maximo = df[coluna_escolhida].max()
return fig, total, media, maximo
if __name__ == "__main__":
app.run(debug=True)