Skip to content Skip to sidebar Skip to footer

Plotting Communities With Python Igraph

I have a graph g in python-igraph. I can get a VertexCluster community structure with the following: community = g.community_multilevel() community.membership gives me a list of t

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] forxin community.membership])

Result (It's so pretty!)

graph

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:

enter image description here

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"