Ir para o conteúdo do rodapé
AJUDA DO PYTHON

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.

igraph python (Como funciona para desenvolvedores): Figura 1 - Página web do igraph

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
SHELL

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())
PYTHON

Saída do console

igraph python (Como funciona para desenvolvedores): Figura 2 - Saída do console do exemplo de código

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') 
PYTHON

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.

igraph python (Como funciona para desenvolvedores): Figura 3 - Gráfico de saída

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)
PYTHON

Saídas do console

igraph python (Como funciona para desenvolvedores): Figura 4 - Saída do console dos cálculos anteriores

Apresentando o IronPDF

igraph python (Como funciona para desenvolvedores): Figura 5 - Página web do 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")
PYTHON

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

igraph python (Como funciona para desenvolvedores): Figura 6 - 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.

igraph python (Como funciona para desenvolvedores): Figura 7 - Plano de licenciamento do IronPDF

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim