Zum Fußzeileninhalt springen
PYTHON-HILFE

igraph python (Wie es für Entwickler funktioniert)

Graphen und komplexe Netzwerkanalysen sind grundlegende Begriffe der Informatik und Mathematik, die zur Modellierung komplexer Verknüpfungen und Interaktionen verwendet werden. Die Knoten, manchmal auch als Vertices bezeichnet, und Kanten, manchmal als Links bezeichnet, eines Graphen sind im Wesentlichen nur visuelle Darstellungen und Interpretationen einer Entität und ihrer Beziehungen, die durch die Kanten gezeigt werden, die Knoten verbinden.

Allgemeiner betrachtet werden alle Graphen, die für Transportsysteme, soziale Netzwerke und Kommunikationsnetzwerke verwendet werden, als Netzwerke betrachtet. Durch das Betrachten von Graphen und Netzwerken können wir Probleme im Zusammenhang mit Konnektivität, Fluss und Netzwerkstruktur verstehen und überwinden. Solche Arbeiten bieten Einblicke in eine Vielzahl von Bereichen, von sozialen Dynamiken und organisatorischen Strukturen bis hin zu Algorithmen für effizientes Routing und Optimierung. Diese Konzepte sind sehr zentral in der Netzwerktheorie, der Operationsforschung und der Datenwissenschaft.

In diesem Artikel verwenden wir igraph, um zu zeigen, wie man Netzwerkgrafiken generiert und sie mit der flexiblen und zuverlässigen IronPDF-Bibliothek in eine PDF-Datei druckt.

Was ist igraph?

Igraph ist ein starkes Python-Paket zum Erstellen, Manipulieren und Analysieren komplexer Graphen und Netzwerke. Es bietet ein enormes Toolkit zum Umgang mit Graphen, von der Generierung über die Manipulation bis hin zur Visualisierung. Python igraph erleichtert die Implementierung von Netzwerkanalysen durch viele Algorithmen, die verschiedene Metriken der Zentralität, der kürzesten Wege, der Gemeinschaftsstrukturen und mehr berechnen.

Diese Bibliothek bietet somit eine gute Visualisierung mit adaptiven Layouts und Eigenschaften für gerichtete und ungerichtete Graphen. Igraph ist sehr flexibel und schnell und wird häufig in Anwendungen für die Analyse schwieriger relationaler Daten wie in der Datenwissenschaft, der computergestützten Biologie und in Studien zu sozialen Netzwerken gefunden.

igraph python (Wie es für Entwickler funktioniert): Abbildung 1 - Igraph-Webseite

Einrichten und Verwenden des igraph-Python-Pakets

Um mit grundlegenden Graphentheorie-Operationen und -Konfigurationen in Python zu beginnen, verwenden Sie die folgenden Schritte, um igraph für sich selbst zu erstellen, zu konfigurieren und zu verwenden.

Installation des igraph-Pakets

Sie müssen zuerst das igraph-Paket installieren. Der folgende pip-Befehl kann dafür verwendet werden:

pip install igraph
pip install igraph
SHELL

Erstellen eines Graphen mit Igraph

Hier ist ein einfaches Beispiel, um Ihnen zu zeigen, wie Sie igraph verwenden, um einen Graphen zu erstellen und einzurichten:

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

Konsolenausgabe

igraph python (Wie es für Entwickler funktioniert): Abbildung 2 - Konsolenausgabe aus dem Codebeispiel

Graph-Layout und -Visualisierung konfigurieren

Wir können den Graphen mit einigen der eingebauten Funktionen von igraph zeichnen. Verändern Sie das Erscheinungsbild und das Layout mit dem Folgenden:

# 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

Ausgegebener Graph

Unten sehen Sie das einfache Graphenbild, das mit Hilfe der Matplotlib-Bibliothek und der Python-Bindings der Cairo-Bibliothek generiert wurde.

igraph python (Wie es für Entwickler funktioniert): Abbildung 3 - Ausgegebener Graph

Erweiterte Graphoperationen

Führen Sie verschiedene Graphoperationen und -analysen durch, wie das Berechnen von Zentralität, das Finden von Gemeinschaften oder das Identifizieren kürzester Wege:

# 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

Konsolenausgaben

igraph python (Wie es für Entwickler funktioniert): Abbildung 4 - Konsolenausgabe aus den vorherigen Berechnungen

Einführung in IronPDF

igraph python (Wie es für Entwickler funktioniert): Abbildung 5 - IronPDF-Webseite

Wir können sogar PDFs programmatisch generieren und bearbeiten, indem wir das IronPDF Python Modul verwenden. Mit dieser Bibliothek haben Sie eine enorme Fähigkeit, PDF-Dokumente aus HTML zu erstellen, zwei oder mehr PDF-Dokumente zu verbinden und sogar bestehende PDFs zu nutzen und sie zu ändern, um Text, Fotos und Anmerkungen einzuschließen. IronPDF ermöglicht es Ihnen, PDFs in professioneller Qualität aus jeder HTML-Seite oder aus Webinhalten zu erstellen, die sich für die Erstellung von Berichten, Rechnungen und anderen Dokumenten eignen, die voreingestellte Stile haben.

Einige ihrer erweiterten Funktionen umfassen das Bearbeiten von Seitenlayouts, die Verschlüsselung von Dokumenten und das Extrahieren von Text aus einem PDF. Es wird den Entwicklern helfen, besser positioniert zu sein, um die allgemeine Nützlichkeit Ihrer Produkte zu verbessern, wenn sie PDFs besser handhaben können.

Installation der IronPDF-Bibliothek

Sie können den folgenden Befehl verwenden, um die Pakete zu installieren, die die Python-Schnittstelle ermöglichen, IronPDF-Funktionen für Ihr Projekt zu nutzen:

pip install ironpdf

Integration von igraph mit IronPDF

Das sind die Schritte, die Sie in Python unternehmen würden, um igraph und IronPDF zu verbinden: Zuerst erstellen Sie einen Graphen mit igraph und zeigen ihn an. Dann wandeln Sie die resultierende Visualisierung in ein PDF um.

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

Dieses Skript erstellt einen Graphen über igraph, visualisiert ihn mit matplotlib und verwendet dann IronPDF, um das Diagramm in ein PDF zu verwandeln. Dieser Code importiert alle notwendigen Bibliotheken und richtet IronPDF mit einem Lizenzschlüssel ein. Erstellen Sie einen leeren Graphen mit fünf Knoten und sechs Kanten und fügen Sie Gewichte und Beschriftungen zur Klarheit hinzu.

Der Graph wird zirkulär angeordnet, und die Plotting beinhaltet Matplotlib mit mehreren Visualisierungseigenschaften, wie Vertexfarbe und -größe und Kantendicken. Danach wird das Ergebnis als Bilddatei, result.png, gespeichert. Schließlich wird es in ein PDF, result.pdf, mit der ImageToPdfConverter von IronPDF transformiert. Erstellung des Graphen, Visualisierung und PDF-Produktion werden in einem Workflow kombiniert.

Ausgegebenes PDF

igraph python (Wie es für Entwickler funktioniert): Abbildung 6 - Ausgegebenes PDF

Lizenzierung

Ein Lizenzschlüssel ist notwendig, damit der Code ohne Wasserzeichen funktioniert. Sie können sich über diesen Link für eine Testlizenz registrieren. Beachten Sie, dass Sie sich registrieren können, ohne einen Identitätsnachweis zu erbringen. Alles, was Sie tun müssen, um sich für die kostenlose Testversion zu registrieren, ist, Ihre E-Mail-Adresse einzugeben.

igraph python (Wie es für Entwickler funktioniert): Abbildung 7 - IronPDF-Lizenzierungsplan

Abschluss

Mit der Kraft von IronPDF und igraph können Sie Lösungen für die Visualisierung und Präsentation komplexer Graphendaten entwickeln. Durch igraph können Sie leicht komplexe Netzwerke erstellen und analysieren, während Sie IronPDF für die nahtlose Umwandlung von Datenvisualisierungen in professionelle PDF-Dokumente verwenden. Diese kombinierten Kräfte helfen Ihnen dabei, umfassende Berichte zu entwickeln, die sowohl Graphanalysen als auch visuelle Darstellungen enthalten.

Diese Integration ermöglicht die Entwicklung verschiedener Anwendungen, die umfassende Netzdokumentation erfordern, einschließlich wissenschaftlicher Forschung, Unternehmensanalysen und datengetriebener Berichte. Darüber hinaus kombiniert es hochwertige Dokumentausgaben mit sehr leistungsstarken Manipulationsfähigkeiten mit Graphen. All das zusätzlich bietet Iron Software eine Vielzahl von Bibliotheken, die es einfacher machen, Anwendungen für eine Reihe von Plattformen und Betriebssystemen wie Windows, Android, MAC, Linux und andere zu entwickeln.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen