histlearn commited on
Commit
df59a77
·
verified ·
1 Parent(s): 39f5c5f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -11
app.py CHANGED
@@ -212,39 +212,46 @@ def plotar_evolucao_bimestres(disciplinas_dados, temp_dir):
212
 
213
  plt.grid(True, linestyle='--', alpha=0.3, zorder=0)
214
 
 
 
 
215
  # Dicionário para armazenar valores por posição
216
  notas_por_posicao = {}
217
 
218
- # Primeira passagem: coletar todos os valores
219
  for idx, disc_data in enumerate(disciplinas_dados):
220
  notas = pd.Series(disc_data['notas'])
221
  bimestres_cursados = disc_data['bimestres_cursados']
 
222
 
223
  if bimestres_cursados:
224
  notas_validas = [nota for i, nota in enumerate(notas, 1) if i in bimestres_cursados and nota is not None]
225
- bimestres = [bim for bim in bimestres_cursados if notas[bim-1] is not None]
226
 
227
  for bim, nota in zip(bimestres, notas_validas):
228
  if nota is not None:
229
  # Arredonda para uma casa decimal para agrupar valores próximos
230
  nota_arredondada = round(nota, 1)
231
- if bim not in notas_por_posicao:
232
- notas_por_posicao[bim] = {}
233
- if nota_arredondada not in notas_por_posicao[bim]:
234
- notas_por_posicao[bim][nota_arredondada] = []
235
- notas_por_posicao[bim][nota_arredondada].append(idx)
 
236
 
237
  # Segunda passagem: plotar os pontos e anotações
238
  for idx, disc_data in enumerate(disciplinas_dados):
239
  notas = pd.Series(disc_data['notas'])
240
  bimestres_cursados = disc_data['bimestres_cursados']
 
241
 
242
  if bimestres_cursados:
243
  notas_validas = [nota for i, nota in enumerate(notas, 1) if i in bimestres_cursados and nota is not None]
244
  bimestres = [bim for bim in bimestres_cursados if notas[bim-1] is not None]
 
245
 
246
  if notas_validas:
247
- plt.plot(bimestres, notas_validas,
248
  color=cores[idx % len(cores)],
249
  marker=marcadores[idx % len(marcadores)],
250
  markersize=8,
@@ -254,13 +261,14 @@ def plotar_evolucao_bimestres(disciplinas_dados, temp_dir):
254
  alpha=0.8)
255
 
256
  # Adicionar anotações apenas para o primeiro ponto de cada valor único
257
- for bim, nota in zip(bimestres, notas_validas):
258
  if nota is not None:
259
  nota_arredondada = round(nota, 1)
 
260
  # Adicionar anotação apenas se este for o primeiro índice para este valor
261
- if notas_por_posicao[bim][nota_arredondada][0] == idx:
262
  plt.annotate(f"{nota_arredondada:.1f}",
263
- (bim, nota),
264
  textcoords="offset points",
265
  xytext=(0, 5),
266
  ha='center',
 
212
 
213
  plt.grid(True, linestyle='--', alpha=0.3, zorder=0)
214
 
215
+ # Configurar deslocamentos para evitar sobreposição
216
+ deslocamentos = np.linspace(-0.1, 0.1, n_disciplinas)
217
+
218
  # Dicionário para armazenar valores por posição
219
  notas_por_posicao = {}
220
 
221
+ # Primeira passagem: coletar todos os valores considerando os deslocamentos
222
  for idx, disc_data in enumerate(disciplinas_dados):
223
  notas = pd.Series(disc_data['notas'])
224
  bimestres_cursados = disc_data['bimestres_cursados']
225
+ desloc = deslocamentos[idx]
226
 
227
  if bimestres_cursados:
228
  notas_validas = [nota for i, nota in enumerate(notas, 1) if i in bimestres_cursados and nota is not None]
229
+ bimestres = [bim + desloc for bim in bimestres_cursados if notas[bim-1] is not None]
230
 
231
  for bim, nota in zip(bimestres, notas_validas):
232
  if nota is not None:
233
  # Arredonda para uma casa decimal para agrupar valores próximos
234
  nota_arredondada = round(nota, 1)
235
+ bim_arredondado = round(bim, 1) # Considerar posição com deslocamento
236
+ if bim_arredondado not in notas_por_posicao:
237
+ notas_por_posicao[bim_arredondado] = {}
238
+ if nota_arredondada not in notas_por_posicao[bim_arredondado]:
239
+ notas_por_posicao[bim_arredondado][nota_arredondada] = []
240
+ notas_por_posicao[bim_arredondado][nota_arredondada].append((idx, bim))
241
 
242
  # Segunda passagem: plotar os pontos e anotações
243
  for idx, disc_data in enumerate(disciplinas_dados):
244
  notas = pd.Series(disc_data['notas'])
245
  bimestres_cursados = disc_data['bimestres_cursados']
246
+ desloc = deslocamentos[idx]
247
 
248
  if bimestres_cursados:
249
  notas_validas = [nota for i, nota in enumerate(notas, 1) if i in bimestres_cursados and nota is not None]
250
  bimestres = [bim for bim in bimestres_cursados if notas[bim-1] is not None]
251
+ bimestres_deslocados = [bim + desloc for bim in bimestres]
252
 
253
  if notas_validas:
254
+ plt.plot(bimestres_deslocados, notas_validas,
255
  color=cores[idx % len(cores)],
256
  marker=marcadores[idx % len(marcadores)],
257
  markersize=8,
 
261
  alpha=0.8)
262
 
263
  # Adicionar anotações apenas para o primeiro ponto de cada valor único
264
+ for bim_orig, bim_desloc, nota in zip(bimestres, bimestres_deslocados, notas_validas):
265
  if nota is not None:
266
  nota_arredondada = round(nota, 1)
267
+ bim_arredondado = round(bim_desloc, 1)
268
  # Adicionar anotação apenas se este for o primeiro índice para este valor
269
+ if notas_por_posicao[bim_arredondado][nota_arredondada][0][0] == idx:
270
  plt.annotate(f"{nota_arredondada:.1f}",
271
+ (bim_desloc, nota),
272
  textcoords="offset points",
273
  xytext=(0, 5),
274
  ha='center',