-
-
Notifications
You must be signed in to change notification settings - Fork 186
Open
Labels
Description
The boid flockers example can be improved with (Solara) visualisation that includes the direction and colors for the boids. It would be nice to have an arrow-like shape to know the direction, and either random colors or to let them take the colors of a group/leader.
Here's an example, in matplotlib, from an old exam we used:
# set the colormap we will use for plotting
bwr = plt.get_cmap("gist_rainbow")
def draw_boids(model):
x_vals = []
y_vals = []
u_vals = []
v_vals = []
colors = [] # List to hold the color for each agent
# Generate unique colors with saturation and transparency
# Use a colormap with high saturation, such as "hsv"
cmap = plt.get_cmap("hsv")
n_agents = len(model.schedule.agents)
color_indices = np.linspace(0, 1, n_agents)
for i, boid in enumerate(model.schedule.agents):
x, y = boid.pos
u, v = boid.direction_vector
x_vals.append(x)
y_vals.append(y)
u_vals.append(u)
v_vals.append(v)
# Assign a color with transparency; alpha value less than 1 introduces transparency
colors.append(cmap(color_indices[i])[:3] + (0.6,)) # Change 0.6 to the desired transparency
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111)
# Use quiver with colors
q = ax.quiver(x_vals, y_vals, u_vals, v_vals, color=colors, angles='xy', pivot='mid',
headaxislength=8, headlength=10, headwidth=7, scale=35)
# The call to `embed_identity` is not changed.
embed_identity(ax, student_name, student_number)
draw_boids(model)