-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaveraging_colors.py
69 lines (56 loc) · 2.33 KB
/
averaging_colors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import matplotlib
import matplotlib.animation
import matplotlib.pyplot
import networkx
import algorithm
import graph_animation
graph = networkx.generators.grid_2d_graph(20, 20)
# Give nodes starting colors:
b = 1.0
g = 1.0
y = 255.0
r = 255.0
node_colors = [
b, b, g, g, y, y, y, y, b, b, b, r, b, r, b, b, b, y, y, y,
b, b, g, g, y, y, y, y, b, b, b, b, b, b, b, b, b, y, y, y,
b, b, r, r, y, y, y, r, b, b, b, b, b, r, b, b, b, b, b, b,
b, b, r, r, y, y, y, y, y, y, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, y, y, y, y, y, y, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, y, y, y, y, y, y, y, y, y, y, b, b, b, b, g, g,
b, b, b, b, y, y, y, y, y, y, y, y, y, y, y, b, b, g, g, g,
b, b, b, b, b, b, y, y, y, y, y, y, y, y, y, b, b, g, g, g,
b, b, b, b, b, b, y, y, y, y, y, y, y, b, b, b, b, b, g, g,
b, b, b, b, b, b, y, r, y, y, y, b, b, b, b, b, b, b, b, b,
b, b, b, b, b, b, y, y, y, y, y, b, b, b, b, b, b, b, b, b,
b, b, b, b, y, y, y, y, y, y, b, b, b, r, b, b, b, r, b, b,
b, b, b, b, y, y, y, r, y, y, b, b, b, b, b, b, b, b, b, b,
b, b, b, b, y, y, y, y, y, y, b, b, b, b, b, b, b, b, y, b,
b, g, g, b, y, y, y, y, y, b, b, b, b, b, b, b, b, y, y, y,
b, g, g, b, y, y, y, y, b, b, b, b, b, b, b, b, y, y, y, y,
b, b, b, b, y, y, y, y, b, b, b, r, b, y, y, y, y, y, y, b,
b, b, b, b, y, y, y, y, b, b, b, y, y, y, y, y, y, b, b, b,
y, y, y, y, y, y, y, y, b, b, b, b, y, y, y, b, b, b, r, r,
y, y, y, y, y, y, y, y, b, b, b, b, b, b, b, b, b, b, r, r,
]
functions = [lambda x: x] * 20 * 20
# algorithm assumes nodes are identified by the numbers 1...n
# but networkx generates node names as (x, y) tuples.
node_positions = list(graph.nodes.keys())
graph = networkx.convert_node_labels_to_integers(graph)
# steal the tuples as position values, then rename the nodes
animation = graph_animation.GraphAnimation(fps=2, dark=True)
animation.add_frame(graph, node_positions, node_colors)
def handle_estimate_update(sum_estimates, num_nodes_estimates):
estimates = [
sum_estimate/num_nodes_estimate
for sum_estimate, num_nodes_estimate
in zip(sum_estimates, num_nodes_estimates)
]
animation.add_frame(graph, node_positions, estimates)
algorithm.comp(
graph,
node_colors,
functions,
handle_estimate_update,
)
animation.render('animation.mp4')