C2MV commited on
Commit
e127c6f
·
verified ·
1 Parent(s): 90f47a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -30
app.py CHANGED
@@ -74,7 +74,10 @@ def calcular_promedio_desviacion(df, n_replicas, unidad_medida):
74
 
75
  return df
76
 
77
- def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos):
 
 
 
78
  col_predicha_num = "Concentración Predicha Numérica"
79
  col_real_promedio = f"Concentración Real Promedio ({unidad_medida})"
80
  col_desviacion = f"Desviación Estándar ({unidad_medida})"
@@ -92,16 +95,6 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
92
  sns.set(style="whitegrid")
93
  plt.rcParams.update({'figure.autolayout': True})
94
 
95
- # Definir estilos de gráficos
96
- estilos = {
97
- "Estilo 1": {"color_puntos": "blue", "color_linea": "green", "color_error": "lightgray", "marker": "o", "line_style": "-"},
98
- "Estilo 2": {"color_puntos": "red", "color_linea": "orange", "color_error": "pink", "marker": "s", "line_style": "--"},
99
- "Estilo 3": {"color_puntos": "purple", "color_linea": "cyan", "color_error": "gray", "marker": "^", "line_style": "-."},
100
- "Estilo 4": {"color_puntos": "black", "color_linea": "yellow", "color_error": "darkgray", "marker": "D", "line_style": ":"}
101
- }
102
-
103
- estilo = estilos.get(estilo_grafico, estilos["Estilo 1"])
104
-
105
  fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))
106
 
107
  # Gráfico de dispersión con línea de regresión
@@ -112,9 +105,9 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
112
  df_valid[col_predicha_num],
113
  df_valid[col_real_promedio],
114
  yerr=df_valid[col_desviacion],
115
- fmt=estilo["marker"],
116
- color=estilo["color_puntos"],
117
- ecolor=estilo["color_error"],
118
  elinewidth=2,
119
  capsize=3,
120
  label='Datos Reales'
@@ -123,10 +116,10 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
123
  ax1.scatter(
124
  df_valid[col_predicha_num],
125
  df_valid[col_real_promedio],
126
- color=estilo["color_puntos"],
127
  s=100,
128
  label='Datos Reales',
129
- marker=estilo["marker"]
130
  )
131
 
132
  # Línea de ajuste
@@ -134,10 +127,10 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
134
  ax1.plot(
135
  df_valid[col_predicha_num],
136
  df_valid['Ajuste Lineal'],
137
- color=estilo["color_linea"],
138
  label='Ajuste Lineal',
139
  linewidth=2,
140
- linestyle=estilo["line_style"]
141
  )
142
 
143
  # Línea ideal
@@ -147,8 +140,8 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
147
  ax1.plot(
148
  [min_predicha, max_predicha],
149
  [min_predicha, max_predicha],
150
- color='red',
151
- linestyle='--',
152
  label='Ideal'
153
  )
154
 
@@ -174,9 +167,9 @@ def generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostra
174
  ax2.scatter(
175
  df_valid[col_predicha_num],
176
  residuos,
177
- color=estilo["color_puntos"],
178
  s=100,
179
- marker=estilo["marker"],
180
  label='Residuos'
181
  )
182
 
@@ -286,12 +279,24 @@ def actualizar_analisis(df, n_replicas, unidad_medida):
286
  df_valid['Ajuste Lineal'] = intercept + slope * df_valid[col_predicha_num]
287
 
288
  # Generar gráfico con opciones predeterminadas
289
- fig = generar_graficos(df_valid, n_replicas, unidad_medida, "Estilo 1", True, True, True)
 
 
 
 
 
 
 
290
  informe, estado = generar_informe_completo(df_valid, n_replicas, unidad_medida)
291
 
292
  return estado, fig, informe, df
293
 
294
- def actualizar_graficos(df, n_replicas, unidad_medida, estilo_grafico, mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos):
 
 
 
 
 
295
  if df is None or df.empty:
296
  return None
297
 
@@ -311,7 +316,14 @@ def actualizar_graficos(df, n_replicas, unidad_medida, estilo_grafico, mostrar_l
311
  return None
312
 
313
  # Generar gráfico con opciones seleccionadas
314
- fig = generar_graficos(df_valid, n_replicas, unidad_medida, estilo_grafico, mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos)
 
 
 
 
 
 
 
315
 
316
  return fig
317
 
@@ -573,10 +585,41 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
573
 
574
  # Opciones y botones debajo del gráfico
575
  with gr.Row():
576
- estilo_grafico_dropdown = gr.Dropdown(
577
- choices=["Estilo 1", "Estilo 2", "Estilo 3", "Estilo 4"],
578
- value="Estilo 1",
579
- label="Estilo del Gráfico"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  )
581
  mostrar_linea_ajuste = gr.Checkbox(value=True, label="Mostrar Línea de Ajuste")
582
  mostrar_linea_ideal = gr.Checkbox(value=True, label="Mostrar Línea Ideal")
@@ -609,7 +652,14 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
609
  # Evento para graficar con opciones seleccionadas
610
  graficar_btn.click(
611
  fn=actualizar_graficos,
612
- inputs=[tabla_output, replicas_slider, unidad_input, estilo_grafico_dropdown, mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos],
 
 
 
 
 
 
 
613
  outputs=graficos_output
614
  )
615
 
 
74
 
75
  return df
76
 
77
+ def generar_graficos(df_valid, n_replicas, unidad_medida, color_puntos, estilo_puntos,
78
+ color_linea_ajuste, estilo_linea_ajuste,
79
+ color_linea_ideal, estilo_linea_ideal,
80
+ color_barras_error, mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos):
81
  col_predicha_num = "Concentración Predicha Numérica"
82
  col_real_promedio = f"Concentración Real Promedio ({unidad_medida})"
83
  col_desviacion = f"Desviación Estándar ({unidad_medida})"
 
95
  sns.set(style="whitegrid")
96
  plt.rcParams.update({'figure.autolayout': True})
97
 
 
 
 
 
 
 
 
 
 
 
98
  fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))
99
 
100
  # Gráfico de dispersión con línea de regresión
 
105
  df_valid[col_predicha_num],
106
  df_valid[col_real_promedio],
107
  yerr=df_valid[col_desviacion],
108
+ fmt=estilo_puntos,
109
+ color=color_puntos,
110
+ ecolor=color_barras_error,
111
  elinewidth=2,
112
  capsize=3,
113
  label='Datos Reales'
 
116
  ax1.scatter(
117
  df_valid[col_predicha_num],
118
  df_valid[col_real_promedio],
119
+ color=color_puntos,
120
  s=100,
121
  label='Datos Reales',
122
+ marker=estilo_puntos
123
  )
124
 
125
  # Línea de ajuste
 
127
  ax1.plot(
128
  df_valid[col_predicha_num],
129
  df_valid['Ajuste Lineal'],
130
+ color=color_linea_ajuste,
131
  label='Ajuste Lineal',
132
  linewidth=2,
133
+ linestyle=estilo_linea_ajuste
134
  )
135
 
136
  # Línea ideal
 
140
  ax1.plot(
141
  [min_predicha, max_predicha],
142
  [min_predicha, max_predicha],
143
+ color=color_linea_ideal,
144
+ linestyle=estilo_linea_ideal,
145
  label='Ideal'
146
  )
147
 
 
167
  ax2.scatter(
168
  df_valid[col_predicha_num],
169
  residuos,
170
+ color=color_puntos,
171
  s=100,
172
+ marker=estilo_puntos,
173
  label='Residuos'
174
  )
175
 
 
279
  df_valid['Ajuste Lineal'] = intercept + slope * df_valid[col_predicha_num]
280
 
281
  # Generar gráfico con opciones predeterminadas
282
+ fig = generar_graficos(
283
+ df_valid, n_replicas, unidad_medida,
284
+ color_puntos='blue', estilo_puntos='o',
285
+ color_linea_ajuste='green', estilo_linea_ajuste='-',
286
+ color_linea_ideal='red', estilo_linea_ideal='--',
287
+ color_barras_error='lightgray',
288
+ mostrar_linea_ajuste=True, mostrar_linea_ideal=True, mostrar_puntos=True
289
+ )
290
  informe, estado = generar_informe_completo(df_valid, n_replicas, unidad_medida)
291
 
292
  return estado, fig, informe, df
293
 
294
+ def actualizar_graficos(df, n_replicas, unidad_medida,
295
+ color_puntos, estilo_puntos,
296
+ color_linea_ajuste, estilo_linea_ajuste,
297
+ color_linea_ideal, estilo_linea_ideal,
298
+ color_barras_error,
299
+ mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos):
300
  if df is None or df.empty:
301
  return None
302
 
 
316
  return None
317
 
318
  # Generar gráfico con opciones seleccionadas
319
+ fig = generar_graficos(
320
+ df_valid, n_replicas, unidad_medida,
321
+ color_puntos, estilo_puntos,
322
+ color_linea_ajuste, estilo_linea_ajuste,
323
+ color_linea_ideal, estilo_linea_ideal,
324
+ color_barras_error,
325
+ mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos
326
+ )
327
 
328
  return fig
329
 
 
585
 
586
  # Opciones y botones debajo del gráfico
587
  with gr.Row():
588
+ color_puntos_dropdown = gr.Dropdown(
589
+ choices=["blue", "red", "green", "purple", "orange", "black"],
590
+ value="blue",
591
+ label="Color de Puntos"
592
+ )
593
+ estilo_puntos_dropdown = gr.Dropdown(
594
+ choices=["o", "s", "^", "D", "v", "<", ">", "h", "H", "p", "*", "X", "d"],
595
+ value="o",
596
+ label="Estilo de Puntos"
597
+ )
598
+ color_linea_ajuste_dropdown = gr.Dropdown(
599
+ choices=["green", "blue", "red", "purple", "orange", "black"],
600
+ value="green",
601
+ label="Color Línea de Ajuste"
602
+ )
603
+ estilo_linea_ajuste_dropdown = gr.Dropdown(
604
+ choices=["-", "--", "-.", ":"],
605
+ value="-",
606
+ label="Estilo Línea de Ajuste"
607
+ )
608
+ with gr.Row():
609
+ color_linea_ideal_dropdown = gr.Dropdown(
610
+ choices=["red", "green", "blue", "purple", "orange", "black"],
611
+ value="red",
612
+ label="Color Línea Ideal"
613
+ )
614
+ estilo_linea_ideal_dropdown = gr.Dropdown(
615
+ choices=["--", "-", "-.", ":"],
616
+ value="--",
617
+ label="Estilo Línea Ideal"
618
+ )
619
+ color_barras_error_dropdown = gr.Dropdown(
620
+ choices=["lightgray", "gray", "darkgray", "pink", "lightblue", "lightgreen"],
621
+ value="lightgray",
622
+ label="Color Barras de Error"
623
  )
624
  mostrar_linea_ajuste = gr.Checkbox(value=True, label="Mostrar Línea de Ajuste")
625
  mostrar_linea_ideal = gr.Checkbox(value=True, label="Mostrar Línea Ideal")
 
652
  # Evento para graficar con opciones seleccionadas
653
  graficar_btn.click(
654
  fn=actualizar_graficos,
655
+ inputs=[
656
+ tabla_output, replicas_slider, unidad_input,
657
+ color_puntos_dropdown, estilo_puntos_dropdown,
658
+ color_linea_ajuste_dropdown, estilo_linea_ajuste_dropdown,
659
+ color_linea_ideal_dropdown, estilo_linea_ideal_dropdown,
660
+ color_barras_error_dropdown,
661
+ mostrar_linea_ajuste, mostrar_linea_ideal, mostrar_puntos
662
+ ],
663
  outputs=graficos_output
664
  )
665