igraph em Python (Como funciona para desenvolvedores)
Grafos e pesquisas sobre redes complexas são noções básicas da ciência da computação e da matemática usadas para modelar ligações e interações complexas. Os nós, também chamados de vértices, e as arestas, também chamadas de ligações, de um grafo são, em essência, meras representações e interpretações visuais de uma entidade e seus relacionamentos, mostradas por meio das arestas que conectam os nós.
De forma mais geral, todos os grafos usados para sistemas de transporte, redes sociais e redes de comunicação são considerados redes. Ao analisar grafos e redes, podemos compreender e superar problemas relacionados à conectividade, ao fluxo e à estrutura da rede. Esse trabalho oferece uma visão sobre uma diversidade de áreas, desde a dinâmica social e a estrutura organizacional até algoritmos para roteamento e otimização eficientes. Esses conceitos são fundamentais na teoria de redes, na pesquisa operacional e na ciência de dados.
Neste artigo, usamos o igraph para mostrar como você pode gerar gráficos de rede e imprimi-los em um arquivo PDF usando a biblioteca IronPDF, que é flexível e confiável.
O que é igraph?
Igraph é um pacote Python robusto para gerar, manipular e analisar grafos e redes complexas. Oferece um conjunto de ferramentas enorme para lidar com grafos, desde a geração até a manipulação e visualização. A biblioteca igraph do Python facilita a implementação de análises de redes por meio de diversos algoritmos que calculam várias métricas de centralidade, caminhos mais curtos, estrutura de comunidades e muito mais.
Essa biblioteca proporciona, portanto, uma boa visualização com layouts e propriedades adaptáveis para grafos direcionados e não direcionados. O iGraph é muito flexível e rápido, sendo frequentemente encontrado em aplicações para análise de dados relacionais complexos, como em ciência de dados, biologia computacional e estudos de redes sociais.

Configurando e usando o pacote igraph do Python
Para começar a aprender operações e configurações fundamentais da teoria dos grafos em Python, siga os passos abaixo para criar, configurar e usar o igraph.
Instalando o pacote igraph
Primeiro, você precisa instalar o pacote igraph. O seguinte comando pip pode ser usado para isso:
pip install igraph
pip install igraph
Criando um gráfico usando o iGraph
Aqui está um exemplo simples para mostrar como usar o igraph para construir e configurar um 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())
Saída do console

Configurar o layout e a visualização do gráfico
Podemos desenhar o gráfico usando alguns dos recursos integrados do igraph. Altere a aparência e o layout da seguinte forma:
# 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')
Gráfico de saída
Abaixo está a imagem de um gráfico simples que foi gerada com a ajuda da biblioteca Matplotlib e das ligações Python da biblioteca Cairo.

Operações avançadas com grafos
Realizar diversas operações e análises em grafos, como calcular a centralidade, encontrar comunidades ou identificar os caminhos mais curtos:
# 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)
Saídas do console

Apresentando o IronPDF

Podemos até gerar e editar PDFs programaticamente usando o módulo IronPDF do Python. Com esta biblioteca, você terá uma enorme capacidade de criar documentos PDF a partir de HTML, mesclar dois ou mais documentos PDF e até mesmo usar PDFs existentes e modificá-los para incluir texto, fotos e anotações. O IronPDF permite gerar PDFs de qualidade profissional a partir de qualquer site HTML ou conteúdo da Web, sendo ideal para gerar relatórios, faturas e outros documentos com estilos predefinidos.
Algumas de suas funcionalidades avançadas incluem edição de layouts de página, criptografia de documentos e extração de texto de um PDF. Isso ajudará os desenvolvedores a estarem em melhor posição para aprimorar a utilidade geral de seus produtos, caso consigam lidar melhor com PDFs.
Instalando a biblioteca IronPDF
Você pode usar o seguinte comando para instalar os pacotes que permitem que a interface Python habilite os recursos do IronPDF para o seu projeto:
pip install ironpdf
Integrando o igraph com o IronPDF
Estes são os passos que você seguiria em Python para mesclar igraph e IronPDF: Primeiro, você criará um gráfico com igraph e o exibirá. Em seguida, converta a visualização resultante em um 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")
Este script irá gerar um gráfico usando o igraph, visualizá-lo com o matplotlib e, em seguida, usar o IronPDF para converter o gráfico em um PDF. Este código importará todas as bibliotecas necessárias e configurará o IronPDF com uma chave de licença. Crie um grafo vazio com cinco vértices e seis arestas e adicione pesos e rótulos para maior clareza.
O gráfico é disposto circularmente e a plotagem envolve o matplotlib com diversas propriedades de visualização, como cor e tamanho dos vértices e largura das linhas das arestas. Depois disso, o resultado — como um arquivo de imagem, result.png — é salvo. Finalmente, ele é transformado em um PDF, result.pdf, com o ImageToPdfConverter do IronPDF. A criação de gráficos, a visualização e a produção de PDFs são combinadas em um único fluxo de trabalho.
PDF gerado

Licenciamento
É necessária uma chave de licença para que o código funcione sem marca d'água. Você pode se cadastrar para uma licença de avaliação gratuita neste link . Note que você pode se inscrever sem fornecer comprovante de identidade. Para se cadastrar na versão de avaliação gratuita, basta inserir seu endereço de e-mail.

Conclusão
Com o poder do IronPDF e do igraph, você pode desenvolver soluções para visualizar e apresentar dados gráficos complexos. Com o igraph, você pode criar e analisar redes complexas com facilidade, enquanto utiliza o IronPDF para a conversão perfeita de visualizações de dados em documentos PDF de nível profissional. A combinação desses esforços ajudará você a desenvolver relatórios abrangentes, incluindo análises gráficas e representações visuais.
Essa integração possibilita o desenvolvimento de diversas aplicações que exigem documentação de rede abrangente, incluindo pesquisa acadêmica, análise de negócios e relatórios baseados em dados. Além disso, combina a geração de documentos de alta qualidade com recursos de manipulação gráfica muito poderosos. Para completar, o Iron Software oferece diversas bibliotecas, facilitando o desenvolvimento de aplicativos para uma variedade de plataformas e sistemas operacionais, como Windows, Android, macOS, Linux e outros.




