hedtorresca commited on
Commit
38331be
·
verified ·
1 Parent(s): f80c3bc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -7
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import gradio as gr
2
  import matplotlib.pyplot as plt
3
- from matplotlib_venn import venn3
4
  from io import BytesIO
5
  from PIL import Image
6
  import pandas as pd
@@ -25,6 +25,7 @@ def validate_inputs(U, A, B, C, AB, AC, BC, ABC):
25
  errors.append(f"A∩B∩C ({ABC}) no puede ser mayor que B∩C ({BC}).")
26
 
27
  return errors
 
28
  def suggest_intersections(U, A, B, C, AB, AC, BC, ABC):
29
  union_ABC = A + B + C - AB - AC - BC + ABC
30
 
@@ -141,8 +142,36 @@ def main(U, A, B, C, AB, AC, BC, ABC):
141
 
142
  return venn_image, probabilities_df, suggestions
143
 
144
- # Gradio Interface
145
- interface = gr.Interface(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  fn=main,
147
  inputs=[
148
  gr.Number(label="U (Universal Set)"),
@@ -158,12 +187,14 @@ interface = gr.Interface(
158
  gr.Image(type="pil", label="Diagrama de Venn"),
159
  gr.Dataframe(label="Tabla de Probabilidades"),
160
  gr.JSON(label="Sugerencias de Intersección")
161
-
162
  ],
163
- title="Calculadora de Probabilidades y Diagrama de Venn",
164
- description="Calcula las probabilidades, intersecciones sugeridas y genera un diagrama de Venn.",
165
  live=True
166
  )
167
 
 
 
 
168
  if __name__ == "__main__":
169
- interface.launch()
 
1
  import gradio as gr
2
  import matplotlib.pyplot as plt
3
+ from matplotlib_venn import venn2, venn3
4
  from io import BytesIO
5
  from PIL import Image
6
  import pandas as pd
 
25
  errors.append(f"A∩B∩C ({ABC}) no puede ser mayor que B∩C ({BC}).")
26
 
27
  return errors
28
+
29
  def suggest_intersections(U, A, B, C, AB, AC, BC, ABC):
30
  union_ABC = A + B + C - AB - AC - BC + ABC
31
 
 
142
 
143
  return venn_image, probabilities_df, suggestions
144
 
145
+ def draw_venn_2(A, B, AB):
146
+ plt.figure(figsize=(10, 10))
147
+ venn = venn2(subsets=(A - AB, B - AB, AB), set_labels=('A', 'B'))
148
+ img = BytesIO()
149
+ plt.title(f"Diagrama de Venn para A y B")
150
+ plt.savefig(img, format='png')
151
+ img.seek(0)
152
+ image = Image.open(img)
153
+ return image
154
+
155
+ def main_2(A, B, AB):
156
+ venn_image = draw_venn_2(A, B, AB)
157
+ return venn_image
158
+
159
+ # Interfaz para dos conjuntos A y B
160
+ interface_2 = gr.Interface(
161
+ fn=main_2,
162
+ inputs=[
163
+ gr.Number(label="A"),
164
+ gr.Number(label="B"),
165
+ gr.Number(label="A ∩ B")
166
+ ],
167
+ outputs=gr.Image(type="pil", label="Diagrama de Venn"),
168
+ title="Diagrama de Venn para dos conjuntos (A y B)",
169
+ description="Genera un diagrama de Venn para dos conjuntos A y B.",
170
+ live=True
171
+ )
172
+
173
+ # Interfaz para tres conjuntos A, B y C (usando tu código original)
174
+ interface_3 = gr.Interface(
175
  fn=main,
176
  inputs=[
177
  gr.Number(label="U (Universal Set)"),
 
187
  gr.Image(type="pil", label="Diagrama de Venn"),
188
  gr.Dataframe(label="Tabla de Probabilidades"),
189
  gr.JSON(label="Sugerencias de Intersección")
 
190
  ],
191
+ title="Calculadora de Probabilidades y Diagrama de Venn (Tres conjuntos)",
192
+ description="Calcula las probabilidades, intersecciones sugeridas y genera un diagrama de Venn para tres conjuntos.",
193
  live=True
194
  )
195
 
196
+ # Combinar ambas interfaces en una tabbed interface
197
+ tabbed_interface = gr.TabbedInterface([interface_2, interface_3], ["Dos conjuntos (A y B)", "Tres conjuntos (A, B y C)"])
198
+
199
  if __name__ == "__main__":
200
+ tabbed_interface.launch()