import gradio as gr import matplotlib.pyplot as plt import numpy as np from matplotlib_venn import venn3 def calculate_probabilities(A, B, C, AB, AC, BC, ABC): total = A + B + C - AB - AC - BC + ABC P_A = A / total P_B = B / total P_C = C / total P_AB = AB / total P_AC = AC / total P_BC = BC / total P_ABC = ABC / total return { "P(A)": P_A, "P(B)": P_B, "P(C)": P_C, "P(A ∩ B)": P_AB, "P(A ∩ C)": P_AC, "P(B ∩ C)": P_BC, "P(A ∩ B ∩ C)": P_ABC, } def plot_venn(A, B, C, AB, AC, BC, ABC): plt.figure(figsize=(8, 8)) venn = venn3(subsets=(A, B, AB, C, AC, BC, ABC), set_labels=('A', 'B', 'C')) plt.title("Venn Diagram") plt.show() def main(A, B, C, AB, AC, BC, ABC): plot_venn(A, B, C, AB, AC, BC, ABC) probabilities = calculate_probabilities(A, B, C, AB, AC, BC, ABC) return probabilities iface = gr.Interface( fn=main, inputs=[ gr.Number(label="Cantidad en A"), gr.Number(label="Cantidad en B"), gr.Number(label="Cantidad en C"), gr.Number(label="Cantidad en A ∩ B"), gr.Number(label="Cantidad en A ∩ C"), gr.Number(label="Cantidad en B ∩ C"), gr.Number(label="Cantidad en A ∩ B ∩ C") ], outputs=[ gr.Plot(label="Diagrama de Venn"), gr.JSON(label="Probabilidades Calculadas") ] ) iface.launch()