Przejdź do treści stopki
POMOC DOTYCZąCA JęZYKA PYTHON

igraph python (Jak to działa dla programistów)

Wykresy i badania nad złożonymi sieciami to podstawowe pojęcia z zakresu informatyki i matematyki, wykorzystywane do modelowania złożonych powiązań i interakcji. Węzły, czasami nazywane również wierzchołkami, oraz krawędzie, czasami określane jako połączenia, w grafie są w istocie jedynie wizualnymi reprezentacjami i interpretacjami danego obiektu oraz jego relacji, przedstawionymi za pomocą krawędzi łączących węzły.

Ogólniej rzecz biorąc, wszystkie grafy wykorzystywane w systemach transportowych, sieciach społecznościowych i sieciach komunikacyjnych są uznawane za sieci. Analizując wykresy i sieci, możemy zrozumieć i rozwiązać problemy związane z łącznością, przepływem i strukturą sieci. Taka praca zapewnia wgląd w różnorodne dziedziny, od dynamiki społecznej i struktury organizacyjnej po algorytmy służące do efektywnego wyznaczania tras i optymalizacji. Koncepcje te mają kluczowe znaczenie w teorii sieci, badaniach operacyjnych i nauce o danych.

W tym artykule wykorzystujemy igraph, aby pokazać, jak można generować wykresy sieciowe i drukować je do pliku PDF przy użyciu elastycznej i niezawodnej biblioteki IronPDF.

Czym jest igraph?

Igraph to potężny pakiet w języku Python służący do generowania, manipulowania i analizowania złożonych grafów i sieci. Zapewnia ogromny zestaw narzędzi do pracy z wykresami, od ich generowania, przez manipulację, aż po wizualizację. Python igraph ułatwia wdrażanie analizy sieciowej dzięki wielu algorytmom obliczającym różne wskaźniki centralności, najkrótszych ścieżek, struktury społeczności i nie tylko.

Biblioteka ta zapewnia zatem dobrą wizualizację dzięki adaptacyjnym układom i właściwościom dla grafów skierowanych i nieskierowanych. Igraph jest bardzo elastyczny i szybki, i często spotyka się go w aplikacjach do analizy trudnych danych relacyjnych, takich jak nauka o danych, biologia obliczeniowa i badania sieci społecznościowych.

igraph python (Jak to działa dla programistów): Rysunek 1 – Strona internetowa Igraph

Konfiguracja i używanie pakietu igraph dla języka Python

Aby rozpocząć pracę z podstawowymi operacjami i konfiguracjami teorii grafów w języku Python, wykonaj poniższe kroki, aby samodzielnie utworzyć, skonfigurować i używać biblioteki igraph.

Instalacja pakietu igraph

Najpierw należy zainstalować pakiet igraph. W tym celu można użyć następującego polecenia pip:

pip install igraph
pip install igraph
SHELL

Tworzenie wykresu za pomocą Igraph

Oto prosty przykład pokazujący, jak używać igraph do tworzenia i konfigurowania grafu:

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

Wynik konsoli

igraph python (Jak to działa dla programistów): Rysunek 2 – Wynik działania konsoli z przykładowego kodu

Konfiguracja układu i wizualizacji wykresów

Możemy narysować wykres, korzystając z niektórych wbudowanych funkcji igraph. Zmień wygląd i układ zgodnie z poniższymi wskazówkami:

# 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

Wynikowy wykres

Poniżej znajduje się prosty wykres, który został wygenerowany przy pomocy biblioteki Matplotlib oraz powiązań biblioteki Cairo z językiem Python.

igraph python (Jak to działa dla programistów): Rysunek 3 – Wygenerowany wykres

Zaawansowane operacje na grafach

Wykonuj różne operacje i analizy grafów, takie jak obliczanie centralności, wyszukiwanie społeczności lub identyfikowanie najkrótszych ścieżek:

# 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

Wyniki konsoli

igraph python (Jak to działa dla programistów): Rysunek 4 – Wynik wyświetlony w konsoli po poprzednich obliczeniach

Przedstawiamy IronPDF

igraph python (Jak to działa dla programistów): Rysunek 5 – Strona internetowa IronPDF

Możemy nawet generować i edytować pliki PDF programowo za pomocą modułu IronPDF for Python. Korzystając z tej biblioteki, zyskasz ogromne możliwości tworzenia dokumentów PDF z HTML, łączenia dwóch lub więcej dokumentów PDF, a nawet wykorzystywania istniejących plików PDF i modyfikowania ich w celu dodania tekstu, zdjęć i adnotacji. IronPDF umożliwia generowanie profesjonalnej jakości plików PDF z dowolnej strony HTML lub treści internetowej, nadających się do tworzenia raportów, faktur i innych dokumentów o ustalonych stylach.

Niektóre z jego zaawansowanych funkcji obejmują edycję układów stron, szyfrowanie dokumentów oraz wyodrębnianie tekstu z plików PDF. Jeśli programiści będą potrafili lepiej obsługiwać pliki PDF, pomoże im to w zwiększeniu ogólnej użyteczności Państwa produktów.

Instalacja biblioteki IronPDF

Możesz użyć poniższego polecenia, aby zainstalować pakiety, które umożliwiają interfejsowi Python korzystanie z funkcji IronPDF w Twoim projekcie:

pip install ironpdf

Integracja igraph z IronPDF

Oto kroki, które należy wykonać w języku Python, aby połączyć igraph i IronPDF: Najpierw należy utworzyć wykres za pomocą igraph i wyświetlić go. Następnie przekształć powstałą wizualizację w plik 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

Ten skrypt wygeneruje wykres za pomocą igraph, zwizualizuje go za pomocą matplotlib, a następnie użyje IronPDF do przekształcenia wykresu w plik PDF. Ten kod zaimportuje wszystkie niezbędne biblioteki i skonfiguruje IronPDF za pomocą klucza licencyjnego. Utwórz pusty graf z pięcioma wierzchołkami i sześcioma krawędziami oraz dodaj wagi i etykiety dla większej przejrzystości.

Wykres ma układ kołowy, a do jego wygenerowania wykorzystano bibliotekę matplotlib z kilkoma właściwościami wizualizacji, takimi jak kolor i rozmiar wierzchołków oraz szerokość kresek krawędzi. Następnie wynik — w postaci pliku graficznego, result.png, zostaje zapisany. Na koniec jest on przekształcany do formatu PDF, result.pdf, za pomocą narzędzia ImageToPdfConverter firmy IronPDF. Tworzenie wykresów, wizualizacja i generowanie plików PDF są połączone w jeden proces.

Wynikowy plik PDF

igraph python (Jak to działa dla programistów): Rysunek 6 – Wygenerowany plik PDF

Licencjonowanie

Aby kod działał bez znaku wodnego, potrzebny jest klucz licencyjny. Możesz zarejestrować się, aby uzyskać bezplatną licencję probną, klikając ten link. Należy pamiętać, że można zarejestrować się bez podawania dowodu tożsamości. Aby zarejestrować się w bezpłatnej wersji próbnej, wystarczy podać swój adres e-mail.

igraph python (Jak to działa dla programistów): Rysunek 7 – Plan licencyjny IronPDF

Wnioski

Dzięki możliwościom IronPDF i igraph możesz tworzyć rozwiązania do wizualizacji i prezentacji złożonych danych graficznych. Dzięki igraph można łatwo tworzyć i analizować złożone sieci, a IronPDF pozwala na płynną konwersję wizualizacji danych do profesjonalnych dokumentów PDF. Połączenie tych możliwości pomoże Ci tworzyć kompleksowe raporty, zawierające zarówno analizy graficzne, jak i wizualne przedstawienia.

Ta integracja umożliwia tworzenie różnych aplikacji wymagających kompleksowej dokumentacji sieciowej, w tym badań naukowych, analiz biznesowych i raportowania opartego na danych. Ponadto łączy wysoką jakość generowanych dokumentów z bardzo zaawansowanymi możliwościami manipulacji wykresami. Co więcej, Iron Software oferuje wiele bibliotek, ułatwiających tworzenie aplikacji na różne platformy i systemy operacyjne, takie jak Windows, Android, MAC, Linux i inne.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie