Plotting Communities With Python Igraph
Solution 1:
Vertices remain ordered in the layout
, graph
, and VertexCluster
, so you can do something like this:
Find the number of communities in the community structure:
>>> max(community.membership)
10
Then create a list/dictionary with max + 1
unique colors (probably not manually like below):
>>> color_list = [
... 'red',
... 'blue',
... 'green',
... 'cyan',
... 'pink',
... 'orange',
... 'grey',
... 'yellow',
... 'white',
... 'black',
... 'purple'
... ]
Then, using list comprehension, create a list containing the colors for each vertex based on the group membership of that vertex and assign that to vertex_color
:
plot(g, "graph.png", layout=layout,
vertex_color=[color_list[x] for x in community.membership])
Result (It's so pretty!)
Solution 2:
A nice way to plot the communities could be the following using mark_groups
:
Example:
from igraph import *
import random
random.seed(1)
g = Graph.Erdos_Renyi(30,0.3)
comms = g.community_multilevel()
plot(comms, mark_groups = True)
This results in the following:
Hope this helps.
Solution 3:
You can pass your VertexClustering object directly to the plot function; it will automatically plot the underlying graph instead and select colors automatically for the clusters. The desired layout can be specified in the layout=... keyword argument as usual.
Post a Comment for "Plotting Communities With Python Igraph"