Passer au contenu du pied de page
AIDE PYTHON

igraph python (Comment ça marche pour les développeurs)

Les recherches sur les graphes et les réseaux complexes sont des notions fondamentales de l'informatique et des mathématiques utilisées pour modéliser des liens et des interactions complexes. Les nœuds, parfois aussi appelés sommets, et les arêtes, parfois appelées liens, d'un graphe sont, en essence, simplement des représentations visuelles et des interprétations d'une entité et de ses relations, montrées à travers les arêtes qui connectent les nœuds.

De manière plus générale, tous les graphes utilisés pour les systèmes de transport, les réseaux sociaux et les réseaux de communication sont considérés comme des réseaux. En examinant les graphes et les réseaux, nous pouvons comprendre et surmonter les problèmes liés à la connectivité, au flux et à la structure des réseaux. Ce type de travail offre un aperçu dans divers domaines, de la dynamique sociale et de la structure organisationnelle aux algorithmes pour un routage et une optimisation efficaces. Ces concepts sont très centraux dans la théorie des réseaux, la recherche opérationnelle et la science des données.

Dans cet article, nous utilisons igraph pour montrer comment vous pouvez générer des graphiques de réseau et les imprimer dans un fichier PDF en utilisant la bibliothèque IronPDF flexible et fiable.

Qu'est-ce que igraph ?

Igraph est un package Python puissant pour générer, manipuler et analyser des graphes et réseaux complexes. Il fournit un énorme ensemble d'outils pour gérer les graphes, de leur génération à leur manipulation et leur visualisation. Python igraph facilite la mise en œuvre de l'analyse de réseau grâce à de nombreux algorithmes calculant diverses métriques de centralité, les chemins les plus courts, la structure des communautés, et bien plus encore.

Cette bibliothèque offre ainsi une bonne visualisation avec des mises en page et des propriétés adaptatives pour les graphes orientés et non orientés. Igraph est très flexible et rapide, et est souvent utilisé dans des applications pour l'analyse de données relationnelles complexes, telles que la science des données, la biologie computationnelle et les études des réseaux sociaux.

igraph python (Comment cela fonctionne pour les développeurs) : Figure 1 - Page web Igraph

Installation et utilisation du package igraph en Python

Pour commencer avec les opérations fondamentales et les configurations de la théorie des graphes en Python, utilisez les étapes suivantes pour créer, configurer et utiliser igraph par vous-même.

Installation du package igraph

Vous devez d'abord installer le package igraph. La commande pip suivante peut être utilisée pour cela :

pip install igraph
pip install igraph
SHELL

Création d'un graphe avec Igraph

Voici un exemple simple pour vous montrer comment utiliser igraph pour construire et configurer un graphe :

from igraph import Graph, plot

# Create an empty graph
g = Graph()

# Add vertices (nodes)
g.add_vertices(5)  # Adding 5 vertices

# Add edges (connections between vertices)
g.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0), (0, 2)])  # Adding edges

# Add vertex ids and edge attributes
g.vs["name"] = ["A", "B", "C", "D", "E"]  # Vertex labels
g.es["weight"] = [1, 2, 3, 4, 5, 6]  # Edge weights

# Print basic graph structural properties
print("Number of vertices:", g.vcount())
print("Number of edges:", g.ecount())
print("Graph summary:", g.summary())
from igraph import Graph, plot

# Create an empty graph
g = Graph()

# Add vertices (nodes)
g.add_vertices(5)  # Adding 5 vertices

# Add edges (connections between vertices)
g.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0), (0, 2)])  # Adding edges

# Add vertex ids and edge attributes
g.vs["name"] = ["A", "B", "C", "D", "E"]  # Vertex labels
g.es["weight"] = [1, 2, 3, 4, 5, 6]  # Edge weights

# Print basic graph structural properties
print("Number of vertices:", g.vcount())
print("Number of edges:", g.ecount())
print("Graph summary:", g.summary())
PYTHON

Sortie Console

igraph python (Comment cela fonctionne pour les développeurs): Figure 2 - Sortie console à partir de l'exemple de code

Configurer la mise en page et la visualisation du graphe

Nous pouvons dessiner le graphe en utilisant certaines des fonctionnalités intégrées d'igraph. Changez l'apparence et la mise en page avec ce qui suit :

# Define a layout for the graph
layout = g.layout("circle")  # Layout in a circular arrangement

# Plot the graph with labels and custom options
plot(
    g,
    layout=layout,
    vertex_label=g.vs["name"],  # Label vertices
    vertex_color="lightblue",   # Vertex color
    edge_width=g.es["weight"],  # Edge width based on weight
    vertex_size=30,             # Vertex size
    edge_color="grey",          # Edge color
    bbox=(300, 300),            # Size of the plot
    margin=20                   # Margin around the plot
)

# Save the plotted graph to a file
plot(g, layout=layout, bbox=(300, 300), margin=20).save('exampleGraph.png') 
# Define a layout for the graph
layout = g.layout("circle")  # Layout in a circular arrangement

# Plot the graph with labels and custom options
plot(
    g,
    layout=layout,
    vertex_label=g.vs["name"],  # Label vertices
    vertex_color="lightblue",   # Vertex color
    edge_width=g.es["weight"],  # Edge width based on weight
    vertex_size=30,             # Vertex size
    edge_color="grey",          # Edge color
    bbox=(300, 300),            # Size of the plot
    margin=20                   # Margin around the plot
)

# Save the plotted graph to a file
plot(g, layout=layout, bbox=(300, 300), margin=20).save('exampleGraph.png') 
PYTHON

Graphe généré

Voici l'image simple du graphe qui a été générée avec l'aide de la bibliothèque Matplotlib et des liaisons Python de la bibliothèque Cairo.

igraph python (Comment cela fonctionne pour les développeurs): Figure 3 - Graphe généré

Opérations avancées sur les graphes

Réalisez diverses opérations et analyses sur les graphes, telles que le calcul de la centralité, la recherche de communautés ou l'identification des chemins les plus courts :

# Calculate degree centrality for each vertex
degrees = g.degree()
print("Degrees of vertices:", degrees)

# Compute shortest path between two vertices that don't have a predefined distance
shortest_path = g.shortest_paths_dijkstra(source=0, target=3)
print("Shortest path from vertex 0 to 3:", shortest_path)

# Detect communities using the Louvain method
communities = g.community_multilevel()
print("Detected communities:", communities)
# Calculate degree centrality for each vertex
degrees = g.degree()
print("Degrees of vertices:", degrees)

# Compute shortest path between two vertices that don't have a predefined distance
shortest_path = g.shortest_paths_dijkstra(source=0, target=3)
print("Shortest path from vertex 0 to 3:", shortest_path)

# Detect communities using the Louvain method
communities = g.community_multilevel()
print("Detected communities:", communities)
PYTHON

Sortie Consoles

igraph python (Comment cela fonctionne pour les développeurs): Figure 4 - Sortie console des calculs précédents

Présentation d'IronPDF

igraph python (Comment cela fonctionne pour les développeurs): Figure 5 - Page web IronPDF

Nous pouvons même générer et éditer des PDF de manière programmatique en utilisant le module Python IronPDF. Avec cette bibliothèque, vous aurez une énorme capacité à créer des documents PDF à partir de HTML, fusionner deux ou plusieurs documents PDF, et même utiliser des PDF existants et les modifier pour inclure du texte, des photos et des annotations. IronPDF vous permet de générer des PDF de qualité professionnelle à partir de n'importe quel site HTML ou contenu Web, adaptés à la génération de rapports, de factures et d'autres documents ayant des styles prédéfinis.

Certaines de ses fonctionnalités avancées incluent l'édition des mises en page des pages, le chiffrement des documents et l'extraction de texte d'un PDF. Cela aidera les développeurs à se positionner mieux pour améliorer l'utilité générale de leurs produits s'ils peuvent mieux gérer les PDF.

Installation de la bibliothèque IronPDF

Vous pouvez utiliser la commande suivante pour installer les packages permettant à l'interface Python d'activer les capacités d'IronPDF pour votre projet :

pip install ironpdf

Intégration d'igraph avec IronPDF

Voici les étapes que vous prendriez en Python pour fusionner igraph et IronPDF : Tout d'abord, vous créerez un graphe avec igraph et l'afficherez. Ensuite, transformez la visualisation résultante en PDF.

from igraph import Graph, plot
import matplotlib.pyplot as plt
from ironpdf import ImageToPdfConverter, License
import warnings

# Suppress warnings for cleaner output
warnings.filterwarnings('ignore')

# Ensure that you have replaced the string with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Create an empty graph
g = Graph()

# Add adjacent vertices (nodes)
g.add_vertices(5)  # Adding 5 vertices

# Add edges (connections between vertices)
g.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0), (0, 2)])  # Adding edges

# Add vertex and edge attributes
g.vs["name"] = ["A", "B", "C", "D", "E"]  # Vertex labels
g.es["weight"] = [1, 2, 3, 4, 5, 6]  # Edge weights

# Define a layout for the graph
layout = g.layout("circle")  # Layout in a circular arrangement

# Create a plot using matplotlib
fig, ax = plt.subplots()

# Plot the graph with specified layout and styles
plot(
    g,
    target=ax,
    layout=layout,
    vertex_label=g.vs["name"],  # Label vertices
    vertex_color="lightblue",   # Vertex color
    edge_width=g.es["weight"],  # Edge width based on weight
    vertex_size=30,             # Vertex size
    edge_color="grey",          # Edge color
    bbox=(300, 300),            # Size of the plot
    margin=20                   # Margin around the plot
)

# Save the plot as a PNG image
plt.savefig('result.png')

# Convert the image to a PDF file
ImageToPdfConverter.ImageToPdf('result.png').SaveAs("result.pdf")
from igraph import Graph, plot
import matplotlib.pyplot as plt
from ironpdf import ImageToPdfConverter, License
import warnings

# Suppress warnings for cleaner output
warnings.filterwarnings('ignore')

# Ensure that you have replaced the string with your own license key
License.LicenseKey = "YOUR LICENSE KEY GOES HERE"

# Create an empty graph
g = Graph()

# Add adjacent vertices (nodes)
g.add_vertices(5)  # Adding 5 vertices

# Add edges (connections between vertices)
g.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0), (0, 2)])  # Adding edges

# Add vertex and edge attributes
g.vs["name"] = ["A", "B", "C", "D", "E"]  # Vertex labels
g.es["weight"] = [1, 2, 3, 4, 5, 6]  # Edge weights

# Define a layout for the graph
layout = g.layout("circle")  # Layout in a circular arrangement

# Create a plot using matplotlib
fig, ax = plt.subplots()

# Plot the graph with specified layout and styles
plot(
    g,
    target=ax,
    layout=layout,
    vertex_label=g.vs["name"],  # Label vertices
    vertex_color="lightblue",   # Vertex color
    edge_width=g.es["weight"],  # Edge width based on weight
    vertex_size=30,             # Vertex size
    edge_color="grey",          # Edge color
    bbox=(300, 300),            # Size of the plot
    margin=20                   # Margin around the plot
)

# Save the plot as a PNG image
plt.savefig('result.png')

# Convert the image to a PDF file
ImageToPdfConverter.ImageToPdf('result.png').SaveAs("result.pdf")
PYTHON

Ce script générera un graphe via igraph, le visualisera avec matplotlib, puis utilisera IronPDF pour transformer ce graphique en PDF. Ce code importera toutes les bibliothèques nécessaires et configurera IronPDF avec une clé de licence. Créez un graphe vide avec cinq sommets et six arêtes et ajoutez des poids et des étiquettes pour plus de clarté.

Le graphe est disposé de manière circulaire, et le graphique implique matplotlib avec plusieurs propriétés de visualisation, telles que la couleur et la taille des sommets, et les largeurs des lignes des arêtes. Après cela, le résultat, en tant que fichier image, result.png, est enregistré. Enfin, il est transformé en PDF, result.pdf, avec le ImageToPdfConverter d'IronPDF. La création du graphe, sa visualisation et la production du PDF sont combinées en un seul flux de travail.

PDF généré

igraph python (Comment cela fonctionne pour les développeurs): Figure 6 - PDF généré

Licences

Une clé de licence est nécessaire pour permettre au code de fonctionner sans filigrane. Vous pouvez vous inscrire à une licence d'essai gratuite à ce lien. Notez que vous pouvez vous inscrire à une sans fournir de preuve d'identité. Tout ce dont vous avez besoin pour vous inscrire à la version d'essai gratuite est de saisir votre adresse e-mail.

igraph python (Comment cela fonctionne pour les développeurs): Figure 7 - Plan de licence IronPDF

Conclusion

Avec la puissance de IronPDF et igraph, vous pouvez développer des solutions pour visualiser et présenter des données de graphes complexes. Avec igraph, vous pouvez facilement créer et analyser des réseaux complexes tout en utilisant IronPDF pour la conversion transparente des visualisations de données en documents PDF de qualité professionnelle. Ces forces combinées vous aideront à développer des rapports complets, incluant à la fois des analyses de graphes et des représentations visuelles.

Cette intégration permet de développer diverses applications qui exigent une documentation réseau complète, notamment la recherche académique, l'analyse commerciale et les rapports basés sur les données. De plus, elle combine une sortie documentaire de haute qualité avec des capacités de manipulation très puissantes avec des graphes. En plus de tout cela, Iron Software fournit une multiplicité de bibliothèques, facilitant le développement d'applications pour une gamme de plates-formes et de systèmes d'exploitation comme Windows, Android, MAC, Linux, et d'autres.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite