# Initial configuration lines = [] for u, v in network.edges(): lines.append({ 'start': network.vertex_coordinates(u, 'xy'), 'end': network.vertex_coordinates(v, 'xy'), 'color': '#cccccc', 'width': 1.0 }) plotter.draw_lines(lines) plotter.draw_vertices(radius=0.005, facecolor={key: '#ff0000' for key in pins}) plotter.draw_edges() plotter.update() # Callback for dynamic visualization def plot_iterations(X, radius=0.005): for i in network.vertices(): x, y, z = X[i, :] network.set_vertex_attributes(i, 'xyz', [x, y, z]) plotter.update_vertices(radius) plotter.update_edges() plotter.update(pause=0.01)
network.set_vertices_attribute('is_fixed', True, keys=leaves) # assign random prescribed force densities to the edges for uv in network.edges(): network.set_edge_attribute(uv, 'qpre', 1.0 * random.randint(1, 7)) # make a plotter for (dynamic) visualization plotter = NetworkPlotter(network, figsize=(10, 7)) # plot the starting configuration plotter.draw_vertices(facecolor={ key: '#000000' for key in network.vertices_where({'is_fixed': True}) }) plotter.draw_edges() plotter.update(pause=1.0) # run the DR network_dr(network, kmax=50, callback=callback) # plot the final configuration plotter.draw_vertices(facecolor={ key: '#000000' for key in network.vertices_where({'is_fixed': True}) }) plotter.draw_edges() plotter.update(pause=1.0) # keep the plot alive plotter.show()