Saltar al pie de página
AYUDA DE PYTHON

igraph python (Cómo Funciona para Desarrolladores)

La investigación de grafos y redes complejas son nociones básicas de la informática y las matemáticas utilizadas para modelar enlaces e interacciones complejas. Los nodos, a veces también llamados vértices, y los bordes, a veces denominados enlaces, de un grafo son, en esencia, simplemente representaciones visuales e interpretaciones de una entidad y sus relaciones, mostradas a través de los bordes que conectan los nodos.

De manera más general, todos los grafos utilizados para sistemas de transporte, redes sociales y redes de comunicación se consideran redes. Al observar grafos y redes, podemos entender y superar problemas relacionados con la conectividad, el flujo y la estructura de la red. Dicho trabajo proporciona información sobre una diversidad de campos, desde la dinámica social y la estructura organizativa hasta los algoritmos para una enrutamiento eficiente y optimización. Estos conceptos son muy centrales en la teoría de redes, investigación de operaciones y ciencia de datos.

En este artículo, usamos igraph para mostrar cómo puedes generar gráficos de red e imprimirlos en un archivo PDF usando la biblioteca de IronPDF flexible y confiable.

¿Qué es igraph?

Igraph es un sólido paquete de Python para generar, manipular y analizar grafos y redes complejas. Proporciona una enorme caja de herramientas para tratar con grafos, desde la generación hasta la manipulación y su visualización. igraph de Python facilita la implementación de análisis de redes a través de muchos algoritmos que calculan varias métricas de centralidad, caminos más cortos, estructura de comunidades y aún más.

Esta biblioteca proporciona así una buena visualización con diseños adaptativos y propiedades para grafos dirigidos y no dirigidos. Igraph es muy flexible y rápido, y a menudo se encuentra en aplicaciones para el análisis de datos relacionales difíciles, como en ciencia de datos, biología computacional y estudios de redes sociales.

igraph python (Cómo funciona para desarrolladores): Figura 1 - Página web de Igraph

Configuración y uso del paquete igraph Python

Para comenzar con las operaciones y configuraciones fundamentales de teoría de grafos en Python, use los siguientes pasos para crear, configurar y usar igraph por sí mismo.

Instalación del paquete igraph

Debe instalar el paquete igraph primero. Se puede usar el siguiente comando pip para esto:

pip install igraph
pip install igraph
SHELL

Creación de un gráfico con Igraph

Aquí hay un ejemplo simple para mostrarte cómo usar igraph para construir y configurar un grafo:

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

Salida de consola

igraph python (Cómo funciona para desarrolladores): Figura 2 - Salida de consola del ejemplo de código

Configurar el diseño y la visualización de gráficos

Podemos dibujar el grafo usando algunas de las características integradas de igraph. Cambie la apariencia y el diseño con lo siguiente:

# 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

Gráfico de salida

A continuación se muestra la imagen del grafo simple que se ha generado con la ayuda de la biblioteca Matplotlib y las bindings de Python de la biblioteca Cairo.

igraph python (Cómo funciona para desarrolladores): Figura 3 - Grafo generado

Operaciones gráficas avanzadas

Realice varias operaciones y análisis de grafos, como calcular la centralidad, encontrar comunidades o identificar caminos más cortos:

# 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

Salidas de la consola

igraph python (Cómo funciona para desarrolladores): Figura 4 - Salida de consola de los cálculos anteriores

Presentando IronPDF

igraph python (Cómo funciona para desarrolladores): Figura 5 - Página web de IronPDF

Incluso podemos generar y editar PDFs programáticamente usando el módulo de Python IronPDF. Usando esta biblioteca, tendrás una enorme capacidad para crear documentos PDF a partir de HTML, fusionar dos o más documentos PDF e incluso hacer uso de PDFs existentes y modificarlos para incluir texto, fotos y anotaciones. IronPDF te permite generar PDFs de calidad profesional desde cualquier sitio HTML o contenido web adecuado para generar informes, facturas y otros documentos que tienen estilos predefinidos.

Algunas de sus características avanzadas incluyen la edición de diseños de página, la encriptación de documentos y la extracción de texto de un PDF. Ayudará a los desarrolladores a estar mejor posicionados para mejorar la utilidad general de sus productos si pueden manejar PDFs mejor.

Instalación de la biblioteca IronPDF

Puede usar el siguiente comando para instalar los paquetes que permiten a la interfaz de Python habilitar las capacidades de IronPDF para su proyecto:

 pip install ironpdf

Integración de igraph con IronPDF

Estos son los pasos que tomarías en Python para fusionar igraph e IronPDF: Primero, crearás un grafo con igraph y lo mostrarás. Luego, convierta la visualización resultante en un 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

Este script generará un grafo a través de igraph, lo visualizará con matplotlib y luego usará IronPDF para convertir el gráfico en un PDF. Este código importará todas las bibliotecas necesarias y configurará IronPDF con una clave de licencia. Cree un grafo vacío con cinco vértices y seis bordes y agregue pesos y etiquetas para mayor claridad.

El grafo se diseña de manera circular, y la trazado implica matplotlib con varias propiedades de visualización, como color y tamaño del vértice y anchos de línea del borde. Después de eso, el resultado, como un archivo de imagen, result.png, se guarda. Finalmente, se transforma en un PDF, result.pdf, con el ImageToPdfConverter de IronPDF. La creación de grafos, visualización y producción de PDF se combinan en un solo flujo de trabajo.

PDF resultante

igraph python (Cómo funciona para desarrolladores): Figura 6 - PDF generado

Licencias

Se necesita una clave de licencia para que el código funcione sin una marca de agua. Puede registrarse para una licencia de prueba gratuita en este enlace. Tenga en cuenta que puede registrarse para una sin proporcionar prueba de identidad. Todo lo que necesita hacer para registrarse en la versión de prueba gratuita es ingresar su dirección de correo electrónico.

igraph python (Cómo funciona para desarrolladores): Figura 7 - Plan de licencias de IronPDF

Conclusión

Con el poder de IronPDF e igraph, puedes desarrollar soluciones para visualizar y presentar datos de grafos complejos. A través de igraph, puedes crear y analizar fácilmente redes complejas, mientras que usas IronPDF para la conversión perfecta de visualizaciones de datos en documentos PDF de calidad profesional. Estas fuerzas combinadas te ayudarán a desarrollar informes completos, que incluyan tanto análisis de grafos como representaciones visuales.

Esta integración permite el desarrollo de varias aplicaciones que demandan documentación de red completa, incluida investigación académica, análisis de negocios e informes basados en datos. Además, combina una salida de documento de alta calidad con capacidades de manipulación muy potentes con grafos. Además de todo eso, Iron Software proporciona una multiplicidad de bibliotecas, lo que facilita el desarrollo de aplicaciones para una gama de plataformas y sistemas operativos como Windows, Android, MAC, Linux y otros.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más