I'm working on a project wherein I need to dynamically refresh my graph layout, getting a image for each step of the layout refresh. The problem is: I can't get the continuity of frames we see in this http://graph-tool.skewed.de/static/doc/demos/animation.html#dynamic-layout. My video seems more like a stopmotion: http://www.mediafire.com/watch/4de67mc7nanu2ox/output4.avi This problem seems to arise from 2 facts: 1) the way I'm refreshing the graph - since I'm simply generating another graph (which is not a bigger problem because the model I'm using is deterministic); 2) max_iter = 2, instead of 1. But EVEN when I set it to 1, I get no continuity from one frame to another. I think it will be useful some parts of the algorithm I'm using, but I don't know how comprehensible it is: #main function: makes graphs and save them as images; also save some useful
data def graph(a, b, BIN): global prop, init_foot, ibin, fbin b=0 while BIN > fbin: print 'while' foot = (init_foot)*(10**a) BIN = ibin - foot*b g.clear_edges() for i in g.vertices(): xj = abs(prop[i])+abs((BIN-1)*dP) match = gt.find_vertex_range(g,prop,(abs(prop[i]+0.0000000001), xj)) val = np.array([g.vertex_index[i], len(match), prop[i], BIN]) exv.append(val) for j in xrange(0,len(match)): e = g.add_edge(g.vertex_index[i], match[j]) Rij = (dP - abs(prop[i] - prop[match[j]]))/dP R[e] = Rij
posa = g.vp['pos'] pos = gt.sfdp_layout(g, pos=posa, max_iter=2) gt.graph_draw(g, pos=pos, vertex_fill_color=Mag,vertex_size=prop_to_size(Mass, mi=3, ma=9.5, log=False, power=6), fit_view=True, output = '%03d.png' % b) #some data I`ll need for analysis comp, hist = gt.label_components(g, directed=False) compo = len(set(comp.a)) components.append(compo) bins.append(BIN) numed.append(g.num_edges()) print g.num_edges(), compo, BIN diam1, end = gt.pseudo_diameter(g) diam.append(diam1) gg = g.copy() graphs.append(gg) deg = g.degree_property_map('out', weight=None) degree.append(deg.a) lclstr = gt.local_clustering(g, undirected=True) gclstr = gt.global_clustering(g) lclust.append(lclstr.a) gclust.append(gclstr) #the cases the images start to get too big to compute efficiently if b > 1 and components[b] < 350: a += 0.1 if b > 1 and components[b] < 150: a += 0.3
#pace b+=1 #pace variation a +=0.1
return components, bins, exv, graphs