awacke1 commited on
Commit
bdf68d5
·
verified ·
1 Parent(s): b20649f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -0
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)