Aller au contenu

NetworkX

NetworkX logo

NetworkX est une bibliothèque Python pour l'étude des graphes et des réseaux.

Installation

$ python3 -m virtualenv -p python3 venv
$ source venv/bin/activate
(venv) $ pip install networkx

Visualisation de graphes avec Graphviz

Graphviz est un ensemble d'outils open source créés par les laboratoires de recherche d'AT&T qui manipulent des graphes définis à l'aide de scripts suivant le langage DOT.

Installation du paquet graphviz

$ sudo apt install graphviz

Note

graphviz est préinstallé chez alwaysdata !

Installation de la librairie pydot

pydot est une interface à Graphviz pour Python.

(venv) $ pip install pydot

Exemple simple

#!/usr/bin/env python3
# -*- coding: utf_8 -*-

import networkx as nx

G = nx.DiGraph()
G.add_edge("Hello", "World!")

H = nx.nx_pydot.to_pydot(G)
H.write_svg("hello.svg")

hello.svg

Exemple un peu plus complexe

Les paramètres de mise en forme du graphe doivent être déclarés avant les nœuds et les arêtes. On crée donc un objet <class 'pydot.Dot'> dont on modifie les propriétés avant de lui copier l'ensemble des nœuds et arêtes de l'objet généré par la méthode nx.nx_pydot.to_pydot(G).

#!/usr/bin/env python3
# -*- coding: utf_8 -*-

import networkx as nx
import pydot

G = nx.DiGraph()
G.add_edge("Hello", "World!")

H = nx.nx_pydot.to_pydot(G)

I = pydot.Dot()
I.set_graph_defaults(fontname="DejaVu Serif", label="example")
I.set_node_defaults(shape="box", fontname="DejaVu Sans Condensed")
I.set_edge_defaults(color="#ff0000")

for node in H.get_nodes():
    I.add_node(node)

for edge in H.get_edges():
    I.add_edge(edge)

I.write_svg("hello_2.svg")

hello.svg

Références

Note

graphviz est une alternative à pydot plus robuste, mais moins bien intégrée à NetworkX.


Dernière mise à jour: 3 septembre 2020