Programer123 commited on
Commit
1171d6b
·
verified ·
1 Parent(s): 0b54954

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +98 -0
app.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dash import Dash, html, dcc, Input, Output, dash_table
2
+ import dash_bootstrap_components as dbc
3
+ import pandas as pd
4
+ import plotly.express as px
5
+
6
+ df = pd.DataFrame({
7
+ "Categoria": ["A", "B", "C", "D", "E"],
8
+ "Vendas": [120, 200, 150, 80, 220],
9
+ "Lucro": [30, 70, 40, 20, 90]
10
+ })
11
+
12
+ app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
13
+
14
+ app.layout = dbc.Container([
15
+ html.H1("Dashboard em Dash", className="my-4"),
16
+
17
+ dbc.Row([
18
+ dbc.Col([
19
+ html.Label("Escolhe a métrica:"),
20
+ dcc.Dropdown(
21
+ id="coluna-dropdown",
22
+ options=[
23
+ {"label": "Vendas", "value": "Vendas"},
24
+ {"label": "Lucro", "value": "Lucro"}
25
+ ],
26
+ value="Vendas",
27
+ clearable=False
28
+ )
29
+ ], md=4)
30
+ ], className="mb-4"),
31
+
32
+ dbc.Row([
33
+ dbc.Col(dbc.Card([
34
+ dbc.CardBody([
35
+ html.H4("Total", className="card-title"),
36
+ html.H2(id="total-card")
37
+ ])
38
+ ]), md=4),
39
+
40
+ dbc.Col(dbc.Card([
41
+ dbc.CardBody([
42
+ html.H4("Média", className="card-title"),
43
+ html.H2(id="media-card")
44
+ ])
45
+ ]), md=4),
46
+
47
+ dbc.Col(dbc.Card([
48
+ dbc.CardBody([
49
+ html.H4("Máximo", className="card-title"),
50
+ html.H2(id="max-card")
51
+ ])
52
+ ]), md=4),
53
+ ], className="mb-4"),
54
+
55
+ dbc.Row([
56
+ dbc.Col([
57
+ dcc.Graph(id="grafico-barras")
58
+ ], md=8),
59
+
60
+ dbc.Col([
61
+ dash_table.DataTable(
62
+ id="tabela",
63
+ columns=[{"name": i, "id": i} for i in df.columns],
64
+ data=df.to_dict("records"),
65
+ style_table={"overflowX": "auto"},
66
+ style_cell={"textAlign": "center"},
67
+ page_size=5
68
+ )
69
+ ], md=4)
70
+ ])
71
+ ], fluid=True)
72
+
73
+
74
+ @app.callback(
75
+ Output("grafico-barras", "figure"),
76
+ Output("total-card", "children"),
77
+ Output("media-card", "children"),
78
+ Output("max-card", "children"),
79
+ Input("coluna-dropdown", "value")
80
+ )
81
+ def atualizar_dashboard(coluna_escolhida):
82
+ fig = px.bar(
83
+ df,
84
+ x="Categoria",
85
+ y=coluna_escolhida,
86
+ color="Categoria",
87
+ title=f"{coluna_escolhida} por Categoria"
88
+ )
89
+
90
+ total = df[coluna_escolhida].sum()
91
+ media = round(df[coluna_escolhida].mean(), 2)
92
+ maximo = df[coluna_escolhida].max()
93
+
94
+ return fig, total, media, maximo
95
+
96
+
97
+ if __name__ == "__main__":
98
+ app.run(debug=True)