1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
"""
.. _tutorials-cliques:
============
Cliques
============
This example shows how to compute and visualize cliques of a graph using :meth:`igraph.GraphBase.cliques`.
"""
import igraph as ig
import matplotlib.pyplot as plt
# %%
# First, let's create a graph, for instance the famous karate club graph:
g = ig.Graph.Famous('Zachary')
# %%
# Computing cliques can be done as follows:
cliques = g.cliques(4, 4)
# %%
# We can plot the result of the computation. To make things a little more
# interesting, we plot each clique highlighted in a separate axes:
fig, axs = plt.subplots(3, 4)
axs = axs.ravel()
for clique, ax in zip(cliques, axs):
ig.plot(
ig.VertexCover(g, [clique]),
mark_groups=True, palette=ig.RainbowPalette(),
vertex_size=5,
edge_width=0.5,
target=ax,
)
plt.axis('off')
plt.show()
# %%
# Advanced: improving plotting style
# ----------------------------------
# If you want a little more style, you can color the vertices/edges within each
# clique to make them stand out:
fig, axs = plt.subplots(3, 4)
axs = axs.ravel()
for clique, ax in zip(cliques, axs):
# Color vertices yellow/red based on whether they are in this clique
g.vs['color'] = 'yellow'
g.vs[clique]['color'] = 'red'
# Color edges black/red based on whether they are in this clique
clique_edges = g.es.select(_within=clique)
g.es['color'] = 'black'
clique_edges['color'] = 'red'
# also increase thickness of clique edges
g.es['width'] = 0.3
clique_edges['width'] = 1
ig.plot(
ig.VertexCover(g, [clique]),
mark_groups=True,
palette=ig.RainbowPalette(),
vertex_size=5,
target=ax,
)
plt.axis('off')
plt.show()
|