import gradio as gr import numpy as np import matplotlib.pyplot as plt from PIL import Image from io import BytesIO class Vector_Addition: def __init__(self, v1, v2): self.v1 = np.array([v1, 1]) self.v2 = np.array([v2, 3]) def problem_add(self): problem_add_prompt = print(f'What does vector 1: {self.v1} + vector 2: {self.v2} equal?') return problem_add_prompt def vector_add(self): v3 = self.v1 + self.v2 v3_text = f'The new vector 3 produced = vector 1: {self.v1} + vector 2: {self.v2} = {v3}' return v3_text def plot_vector_add(self): plt.figure(figsize=(10,5)) plt.plot([0, self.v1[0]], [0, self.v1[1]], 'b', label='v1') plt.plot([0, self.v2[0]], [0, self.v2[1]], 'r', label='v2') plt.plot([0, self.v1[0]+ self.v2[0]], [0, self.v1[1]+ self.v2[1]], 'k', label='v1+v2') plt.xlabel('X') plt.ylabel('Y') plt.title('Vector Addition') plt.grid(True) plt.legend() buf = BytesIO() plt.savefig(buf, format='png') buf.seek(0) image = Image.open(buf) plt.close() return image buf = BytesIO() plt.savefig(buf, format='png') buf.seek(0) image = Image.open(buf) plt.close() return image def vector_addition(v1, v2): vector_addition = Vector_Addition(v1, v2) v3 = vector_addition.vector_add() plot = vector_addition.plot_vector_add() return v3, plot iface = gr.Interface(vector_addition, [gr.components.Number(label="Vector 1"), gr.components.Number(label="Vector 2")], [gr.components.Textbox(label="Vector 3"), gr.components.Image(label="Vector Addition Plot")]) iface.launch()