Hello. import graph_tool.all as gt import numpy as np import sys, os, os.path from gi.repository import Gtk, Gdk, GdkPixbuf, GObject def random_attack(g): victim = g.vertex( np.random.randint( 0, g.num_vertices() ) ); g.remove_vertex( victim ); g = gt.price_network(100, directed=False); pos = gt.arf_layout(g) max_count = 50 if not os.path.exists("./frames"): os.mkdir("./frames"); win = Gtk.OffscreenWindow(); win.set_default_size(1000, 1000); win.graph = gt.GraphWidget(g, pos ); win.add(win.graph); count = 0; def update_state(): global count; count += 1; random_attack(g); gt.arf_layout(g, pos=pos, max_iter = 1); win.graph.regenerate_surface(lazy=False); win.graph.queue_draw(); pixbuf = win.get_pixbuf(); pixbuf.savev(r'./frames/dancing%06d.png' % count, 'png', [], []); if count > max_count: sys.exit(0); return True; cid = GObject.idle_add(update_state); win.connect("delete_event", Gtk.main_quit); win.show_all(); Gtk.main(); is there way to paint edges and vertex from largest connected component in different color? Somthing like this: vcmap = gt.label_largest_component(g) gt.GraphWidget(g, pos, vcmap );