It seems like there's a bug in the code of the label propagation algorithm which assigns some of the vertices to a community with index = -1 if there are lots of isolated vertices. A quick way to reproduce this:
>>> Graph(10).community_label_propagation().membership [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8] A temporary workaround is: g = Graph(10) cl = g.community_label_propagation() cl = VertexClustering(g, membership=[x+1 for x in cl.membership]) I will fix the underlying bug in the label propagation algorithm soon. T. On Sat, Apr 9, 2016 at 1:23 AM, Zhige Xin <[email protected]> wrote: > Hi I tried to plot the community structure by using label propagation > algorithm but got some errors. First, the value of modularity is none. > Second, it produced IndexError: color index must be non-negative. > > My idea: > 1. Read from a csv file with the format of weighted adjacency matrix > 2. Convert the data into a graph object in igraph > 3. Applying label propagation algorithm to find communities > 4. Plot the result > > My code is following: > > from igraph import * > from numpy import genfromtxt > import numpy as np > > > my_data = genfromtxt('CBSNews.csv', delimiter=',') > conn_indices = np.where(my_data) > weights = my_data[conn_indices] > edges = zip(*conn_indices) > g = Graph(edges=edges, directed=False) > g.es['weight'] = weights > result = g.community_label_propagation() > print result.modularity > plot(result) > > The erros message is: > > Traceback (most recent call last): > File "plot_community.py", line 25, in <module> > plot(result) > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/__init__.py", > line 475, in plot > result.show() > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/__init__.py", > line 316, in show > self.redraw(ctx) > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/__init__.py", > line 269, in redraw > plotter(ctx, bbox, palette, *args, **kwds) > File "/usr/local/lib/python2.7/site-packages/igraph/clustering.py", line > 509, in __plot__ > return self._graph.__plot__(context, bbox, palette, *args, **kwds) > File "/usr/local/lib/python2.7/site-packages/igraph/__init__.py", line > 3152, in __plot__ > drawer.draw(self, palette, *args, **kwds) > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/graph.py", > line 259, in draw > vertex_builder = vertex_drawer.VisualVertexBuilder(graph.vs, kwds) > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/metamagic.py", > line 222, in __init__ > values = self._collect_attributes(attr_spec) > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/metamagic.py", > line 340, in _collect_attributes > result = [transform(x) for x in result] > File "/usr/local/lib/python2.7/site-packages/igraph/drawing/colors.py", > line 93, in get > raise IndexError("color index must be non-negative") > > I do appreciate it if anyone can help. > > > > > Best, > Zhige > > _______________________________________________ > igraph-help mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/igraph-help > _______________________________________________ igraph-help mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/igraph-help
