Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import matplotlib.pyplot as plt
|
3 |
+
import numpy as np
|
4 |
+
|
5 |
+
def generate_colored_circle_template(num_circles):
|
6 |
+
fig, ax = plt.subplots(figsize=(6, 6))
|
7 |
+
ax.set_xlim(0, 1)
|
8 |
+
ax.set_ylim(0, 1)
|
9 |
+
ax.axis('off')
|
10 |
+
|
11 |
+
for _ in range(num_circles):
|
12 |
+
radius = np.random.uniform(0.05, 0.15)
|
13 |
+
center = (np.random.uniform(radius, 1-radius), np.random.uniform(radius, 1-radius))
|
14 |
+
color = np.random.rand(3,)
|
15 |
+
circle = plt.Circle(center, radius, color=color, alpha=0.8)
|
16 |
+
ax.add_artist(circle)
|
17 |
+
return fig
|
18 |
+
|
19 |
+
def generate_symmetrical_circle_layout(num_layers):
|
20 |
+
fig, ax = plt.subplots(figsize=(6, 6))
|
21 |
+
ax.set_aspect('equal')
|
22 |
+
ax.axis('off')
|
23 |
+
|
24 |
+
center = (0.5, 0.5)
|
25 |
+
for i in range(num_layers):
|
26 |
+
radius = (i + 1) * 0.1
|
27 |
+
for j in range(6):
|
28 |
+
angle = np.pi / 3 * j
|
29 |
+
x = center[0] + radius * np.cos(angle)
|
30 |
+
y = center[1] + radius * np.sin(angle)
|
31 |
+
circle = plt.Circle((x, y), radius=0.05, color=np.random.rand(3,), fill=True)
|
32 |
+
ax.add_artist(circle)
|
33 |
+
return fig
|
34 |
+
|
35 |
+
# Streamlit UI
|
36 |
+
st.title("Circle Packings Visualization")
|
37 |
+
|
38 |
+
mode = st.radio("Choose a visualization mode:", ("Random Circle Packings", "Symmetrical Circle Layouts"))
|
39 |
+
|
40 |
+
if mode == "Random Circle Packings":
|
41 |
+
num_circles = st.slider("Number of Circles", 5, 50, 10)
|
42 |
+
fig = generate_colored_circle_template(num_circles)
|
43 |
+
st.pyplot(fig)
|
44 |
+
elif mode == "Symmetrical Circle Layouts":
|
45 |
+
num_layers = st.slider("Number of Symmetrical Layers", 1, 5, 3)
|
46 |
+
fig = generate_symmetrical_circle_layout(num_layers)
|
47 |
+
st.pyplot(fig)
|