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

attachment.html (5.32 KB)