This worked thank you very much.
Also, it always helps us to help you if you provide a self-contained, minimal example of your issue.
True, the thing is that I am using the data in a research project and it would take some time for me to anonymize and simplify the code but you are right in any case Cheers Yannis Date: Thu, 8 Oct 2015 23:27:54 -0300 From: abdo@member.fsf.org To: graph-tool@skewed.de Subject: Re: [graph-tool] Controlling vertex labels in GraphWidget Funny, this used to be documented. It seems the "List of vertex properties" got erased from the graph.draw documentation by accident. If I remember right, positive values for text_position are angles for the text to be placed outside the vertex, while negative values cause the text to be centered, where -1 causes the vertex to expand with the text. Try setting your text_position to -2 and see if that achieves what you want. Also, it always helps us to help you if you provide a self-contained, minimal example of your issue. Cheers On Thu, Oct 8, 2015 at 6:11 PM, yannis panagis <ypanagis@hotmail.com> wrote: Hi, I apologise for the long post. I am trying to draw an evolving graph and create some snapshots every year. I want to show the growth of the graph by increasing the size of the nodes and the size of the node labels. In the beginning because my node labels were long, drawing the graph caused the nodes to fully enclose the label (example attached), despite any effort to control their size programmatically, making the graph unreadable. Then I discovered the (undocumented?) parameter "vertex_text_position" and started setting it to e.g. 4. Now whenever the nodes grow in size, as the time goes by, the labels are being displaced far away from the corresponding nodes. Three questions: 1. What are the possible values for "vertex_text_position" and what is their meaning 2. Why are the labels being displaced when node grows in size instead of staying next to the node and 3. Is it possible to align the label at center of the node and at the same time ensure the node size is not adjusted to cover the entire label? My code looks approximately like that: pos = g.new_vertex_property("vector<double>") col = g.new_vertex_property("vector<double>") vf_size = g.new_vertex_property("float") for v in g.vertices(): pos[g.vertex(v)] = [float(g.vp['x'][v]), float(g.vp['y'][v])] # load layout from the existing file col[g.vertex(v)] = [int(g.vp['r'][v])/255.0, int(g.vp['g'][v])/255.0, int(g.vp['b'][v])/255.0, 0.8] if not offscreen: win = GraphWindow(g, pos=pos, geometry=(1024, 768), edge_color=[0.6, 0.6, 0.6, 1], vertex_fill_color=col, ) else: win.graph = GraphWidget(g, pos=pos, edge_color=[0.8, 0.8, 0.8, 1], vertex_fill_color=col, vertex_size=g.vp.size, vertex_text=g.vp.label, vertex_text_position=4, vertex_font_size=vf_size, vertex_font_family="sans-serif" ) win.add(win.graph) def update_state(): # Some logic to filter the graph, keep the nodes # that are active at specific milestones # and call pixbuf.savev global count v_list = nodes_in_years[count] # maintains the nodes of that year for v in v_list: active[v] = True for e in list(v.out_edges()): e_active[e] = True g.set_vertex_filter(active) g.set_edge_filter(e_active) for v in g.vertices(): g.vp.size[v] = v.in_degree()*0.9 + 1 # This has a dynamic effect of the node sizes vf_size[v] = v.in_degree()/2.0 # changes the font size win.graph.regenerate_surface() win.graph.queue_draw() # if doing an offscreen animation, dump frame to disk if offscreen: pixbuf = win.get_pixbuf() pixbuf.savev(r'./frames/graph%04d.png' % count, 'png', [], []) if count > years[-1]: sys.exit(0) count += 1 # We need to return True so that the main loop will call this function more # than once. return True Thank you Yannis _______________________________________________ graph-tool mailing list graph-tool@skewed.de http://lists.skewed.de/mailman/listinfo/graph-tool _______________________________________________ graph-tool mailing list graph-tool@skewed.de http://lists.skewed.de/mailman/listinfo/graph-tool