-
Notifications
You must be signed in to change notification settings - Fork 0
/
gov_app.py
162 lines (139 loc) · 5.19 KB
/
gov_app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Configuração da página (deve ser feita no início)
st.set_page_config(page_title="DATA GOV", layout="wide")
class GovWebApp:
def __init__(self):
self.app_title = "Web App de Dados Governamentais"
self.sidebar_options = {
"Início": self.show_inicio,
"Saúde": self.show_saude,
"Educação": self.show_educacao,
"Segurança": self.show_seguranca,
"Economia": self.show_economia,
}
def header(self):
st.markdown(
"""
<style>
/* Estilo do header */
.header {
background-color: #28a745; /* Verde */
border: none;
padding: 20px;
position: fixed;
top: 60px;
left: 0;
width: 100%;
z-index: 1000;
text-align: center;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.header .logo {
font-size: 30px;
font-weight: bold;
color: white;
margin-left: 20px;
}
.header .nav {
display: flex;
align-items: center;
}
.header .nav a {
margin: 0 10px;
text-decoration: none;
color: white;
font-weight: bold;
}
.header .btn {
background-color: white;
border: none;
color: #28a745 !important; /* Cor do texto do botão */
padding: 10px 20px;
border-radius: 5px;
text-decoration: none;
font-weight: bold;
font-size: 18px;
}
.header .btn:hover {
background-color: #236e1a;
color: white !important;
}
/* Espaçamento para evitar sobreposição */
.main-content {
margin-top: 80px;
}
</style>
<div class="header">
<div class="logo">DATA GOV</div>
<div class="nav">
<a href="#inicio">Início</a>
<a href="#relatorios">Relatórios</a>
<a href="#contato" class="btn">Ver Relatórios →</a>
</div>
</div>
""",
unsafe_allow_html=True,
)
def main_content(self):
st.markdown('<div class="main-content">', unsafe_allow_html=True)
def subheader(self):
st.markdown("<div class='main-header'>Monitore Licitações do GOV</div>", unsafe_allow_html=True)
st.markdown("<div class='sub-header'>Dados Provenientes do Diário Oficial!</div>", unsafe_allow_html=True)
def display_sidebar(self):
st.sidebar.title("Dados do Governo")
return st.sidebar.radio("Selecione uma aba", list(self.sidebar_options.keys()))
# Métodos para cada aba
def show_inicio(self):
self.header() # Exibe o header
self.main_content() # Ajusta o conteúdo principal
self.subheader() # Exibe o subheader
st.write("Explore dados importantes sobre diversos setores do governo.")
st.info("Use a barra lateral para navegar entre os setores.")
def show_saude(self):
self.header()
self.main_content()
self.subheader()
st.write("### Informações sobre Saúde Pública")
st.write("Aqui você encontrará estatísticas, dados e análises do setor de saúde no Brasil.")
# Dados de exemplo
data = np.random.randn(1000)
st.title("Histograma de licitações por período")
# Criando o histograma
fig, ax = plt.subplots()
ax.hist(data, bins=30, color='skyblue', edgecolor='black')
ax.set_title("Histograma")
ax.set_xlabel("Valores")
ax.set_ylabel("Frequência")
# Exibindo no Streamlit
st.pyplot(fig)
def show_educacao(self):
self.header()
self.main_content()
self.subheader()
st.write("### Informações sobre Educação")
st.write("Explore dados sobre escolas, universidades e programas educacionais no Brasil.")
def show_seguranca(self):
self.header()
self.main_content()
self.subheader()
st.write("### Informações sobre Segurança Pública")
st.write("Descubra estatísticas sobre segurança, policiamento e políticas públicas de segurança.")
def show_economia(self):
self.header()
self.main_content()
self.subheader()
st.write("### Informações sobre Economia")
st.write("Analise dados sobre PIB, desemprego, inflação e outros indicadores econômicos.")
def run(self):
selected_option = self.display_sidebar()
# Chama o método correspondente à aba selecionada
self.sidebar_options[selected_option]()
if __name__ == "__main__":
app = GovWebApp()
app.run()