import streamlit as st import matplotlib.pyplot as plt import numpy as np def plot_polygon(edges, vertices): if len(edges) != len(vertices): st.warning("Number of edges and vertices should be the same.") return fig, ax = plt.subplots() ax.set_aspect('equal', adjustable='box') ax.set_title('Polygon Plot') ax.grid(True) edges = np.array(edges) vertices = np.array(vertices) for i in range(len(edges)): ax.plot([vertices[i][0], vertices[(i + 1) % len(edges)][0]], [vertices[i][1], vertices[(i + 1) % len(edges)][1]], 'b-') ax.scatter(vertices[:, 0], vertices[:, 1], color='red') plt.xlim(np.min(vertices[:, 0]) - 1, np.max(vertices[:, 0]) + 1) plt.ylim(np.min(vertices[:, 1]) - 1, np.max(vertices[:, 1]) + 1) st.pyplot(fig) def main(): st.title("Polygon Plotter") st.write("Enter the number of edges and vertices for the polygon, then input the coordinates.") num_edges = st.number_input("Number of Edges:", min_value=3, step=1) vertices = [] for i in range(num_edges): x = st.number_input(f"Vertex {i + 1} - x:", key=f"x{i}") y = st.number_input(f"Vertex {i + 1} - y:", key=f"y{i}") vertices.append((x, y)) if st.button("Plot Polygon"): plot_polygon(range(num_edges), vertices) if __name__ == "__main__": main()