Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
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()
|