Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Networkx

Le module Networkx doit être téléchargé ici (prendre le fichier tar.gz), puis décompressé. Pour utiliser la bibliothèque, vous devez être dans le répertoire décompressé. Attention : il semblerait que ce module doit être retéléchargé à chaque séance.

Exemple de base

Module permettant de manipuler des graphes. Pour l'importer :

  >>> from networkx import *

cette commande ne marche que si vous êtes dans le répertoire networkx-1.7. Créer un graphe :

  >>> G=Graph()

Ajouter un ou plusieurs noeuds :

  >>> G.add_node(1)
  >>> G.add_nodes_from([2,3])

Ajouter des arcs :

  >>> G.add_edges_from([(1,2),(1,3)])

Obtenir une représentation graphique avec Pylab :

  >>> import pylab as P
  >>> draw(G)
  >>> P.show()
  >>> draw_circular(G)
  >>> P.show()

Cas des digraphes

Pour réaliser un digraphe (ou graphe orienté) avec networkx, et le visualiser avec Pylab, on utilise la classe DiGraph au lieu de Graph :

  >>> from networkx import *
  >>> G = DiGraph()
  >>> G.add_nodes_from([0,1,2,3,4])
  >>> G.add_edges_from([(0,1),(1,0),(1,2),(2,1),(2,3),(3,2),(3,4),(4,3)])
  >>> draw(G)
  >>> import pylab as P
  >>> P.show()

Autres graphes

Liste des graphes

networks utilise 4 classes différentes, selon le type de graphe :

Graph()
Un graphe non orienté sans boucle, ni arc multiple.
DiGraph()
Un graphe orienté sans boucle, ni arc multiple.
MultiGraph()
Un graphe non orienté, pouvant avoir boucles et arcs multiples.
MultiDiGraph()
Un graphe orienté, pouvant avoir boucles et arcs multiples.

Exemple

Montrons comment créer un MultiDiGraph, avec boucles :

  >>> G = MultiDiGraph()
  >>> G.add_nodes_from([1,2,3,4])
  >>> G.add_edges_from([(1,1),(1,2),(1,3),(2,3),(3,3),(2,4),(4,4)])

On peut alors demander le nombre de boucles, et la liste des boucles :

  >>> G.number_of_selfloops()
  >>> G.selfloop_edges()

Dessiner K5

Mise en page : neato

Cette fois-ci, on n'utilise pas Pylab, pour représenter le graphe, mais graphviz (pas installé en salle de TP, pour l'instant) :

  >>> from networkx import *
  >>> G=complete_graph(5) # K5 est le graphe complet à 5 noeuds
  >>> A=to_agraph(G)      # convertion vers graphviz 
  >>> A.layout()          # choix de la mise en page : celle de base (neato)
  >>> A.draw("k5.ps")     # écriture du résultat dans un fichier postscript

Le résultat doit être visualisé à part. Pour visualiser le fichier k5.ps, on peut par exemple taper ceci dans un terminal (sous linux) :

   $ evince k5.ps

Autres mises en pages

Au lieu d'utiliser la mise en page de base, à savoir neato, on peut en préciser une autre :

  >>> A=to_agraph(G)
  >>> A.layout(prog='dot')
  >>> A.draw('graphe2.jpg',prog)

Les choix possibles sont : neato,dot,twopi,circo,fdp, et nop.

La documentation

Vous pourrez trouver d'autres informations, de la documentation et l'API sur le site de Networkx : ici.

Page Actions

Recent Changes

Group & Page

Back Links