python - Graph-Tool GraphView Object -
i have filtered graph generated using graph-tool's graphview().
g = gt.graphview(g, vfilt= label_largest_component(g, directed=false)) the original graph g has 10,069 vertices while resulting graph has 9,197. however, using new (filtered) graph, when list in-degrees using indeg = g.degree_property_map("in"), total number of elements in list(indeg.a) still 10,069. becomes problematic when plotting new filtered graph 9,197 nodes vertex sizes set function of indeg, because of mismatched number of elements.
the code snippet looks this
g = load_graph("ppnet.xml") g = graphview(g, vfilt=label_largest_component(g, directed=false)) indeg = g.degree_property_map("in") indeg.a = np.sqrt(indeg.a) + 2 graph_draw(g, vertex_size = indeg, vertex_fill_color=indeg, pos = sfdp_layout(g), vcmap=plt.cm.gist_heat, output_size=(400, 400), output="gc.png") which when run, gives following valueerror
valueerror: operands not broadcast shapes (10069,) (9197,) what proper way add intended style graphview objects?
found solution. first created copy of graphview object , purged vertices of copy. note instead of retaining variable name g, introduced new variable gc clarity.
g = load_graph("ppnet.xml") gc = graphview(g, vfilt=label_largest_component(g, directed=false)).copy() gc.purge_vertices() indeg = gc.degree_property_map("in") indeg.a = np.sqrt(indeg.a)+2 graph_draw(gc, vertex_size = indeg, vertex_fill_color=indeg, pos = sfdp_layout(gc), vcmap=plt.cm.gist_heat, output_size=(400, 400), output="gc.png")
Comments
Post a Comment