Spaces:
Sleeping
Sleeping
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() | |