Zum Fußzeileninhalt springen
PYTHON-HILFE

igraph python (Wie es für Entwickler funktioniert)

Graphen und komplexe Netzwerke sind Grundbegriffe der Informatik und Mathematik, die zur Modellierung komplexer Zusammenhänge und Interaktionen verwendet werden. Die Knoten, manchmal auch Scheitelpunkte genannt, und die Kanten, manchmal auch als Links bezeichnet, eines Graphen sind im Wesentlichen nur visuelle Darstellungen und Interpretationen einer Entität und ihrer Beziehungen, die durch die Kanten, die Knoten verbinden, gezeigt werden.

Ganz allgemein werden alle Graphen, die für Transportsysteme, soziale Netzwerke und Kommunikationsnetze verwendet werden, als Netzwerke betrachtet. Durch die Betrachtung von Graphen und Netzwerken können wir Probleme im Zusammenhang mit Konnektivität, Fluss und Netzwerkstruktur verstehen und lösen. Diese Arbeit bietet Einblicke in eine Vielzahl von Bereichen, von sozialer Dynamik und Organisationsstruktur bis hin zu Algorithmen für effizientes Routing und Optimierung. Diese Konzepte sind in der Netzwerktheorie, im Operations Research und in der Datenwissenschaft sehr zentral.

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 leistungsstarkes Python-Paket zur Erzeugung, Bearbeitung und Analyse komplexer Graphen und Netzwerke. Es bietet ein enormes Toolkit für den Umgang mit Graphen, von der Erzeugung bis zur Manipulation und Visualisierung. Python igraph erleichtert die Implementierung von Netzwerkanalysen durch viele Algorithmen, die verschiedene Metriken wie Zentralität, kürzeste Pfade, Community-Struktur und vieles mehr berechnen.

So bietet diese Bibliothek 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 eingesetzt, z. B. in der Datenwissenschaft, der Computerbiologie und der Untersuchung sozialer Netzwerke.

igraph python (How it Works for Developers): Abbildung 1 - Igraph-Webseite

Einrichten und Verwenden des igraph Python-Pakets

Um mit den grundlegenden Operationen und Konfigurationen der Graphentheorie in Python zu beginnen, verwenden Sie die folgenden Schritte, um igraph selbst zu erstellen, zu konfigurieren und zu verwenden.

Installation des igraph-Pakets

Sie müssen zuerst das igraph-Paket installieren. Dazu kann der folgende pip-Befehl verwendet werden:

pip install igraph
pip install igraph
SHELL

Erstellen eines Graphen mit Igraph

Hier ist ein einfaches Beispiel, das Ihnen zeigt, wie Sie mit igraph ein Diagramm erstellen und einrichten:

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 (How it Works for Developers): Abbildung 2 - Konsolenausgabe des Codebeispiels

Konfigurieren Sie Graph-Layout und Visualisierung

Wir können das Diagramm mit einigen der eingebauten Funktionen von igraph zeichnen. Ä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

Nachfolgend sehen Sie ein einfaches Diagramm, das mit Hilfe der Matplotlib-Bibliothek und den Python-Bindungen der Cairo-Bibliothek erstellt wurde.

igraph python (How it Works for Developers): Abbildung 3 - Ausgegebener Graph

Fortgeschrittene Graph-Operationen

Führen Sie verschiedene Graphenoperationen und -analysen durch, wie z. B. die Berechnung der Zentralität, das Auffinden von Gemeinschaften oder die Identifizierung kürzester Pfade:

# 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

Konsolenausgabes

igraph python (How it Works for Developers): Abbildung 4 - Konsolenausgabe der vorherigen Berechnungen

Einführung in IronPDF

igraph python (How it Works for Developers): Abbildung 5 - IronPDF-Webseite

Mit dem Python-Modul IronPDF können wir sogar PDFs programmatisch erzeugen und bearbeiten. Mit dieser Bibliothek haben Sie enorme Möglichkeiten, PDF-Dokumente aus HTML zu erstellen, zwei oder mehr PDF-Dokumente zusammenzuführen und sogar bestehende PDFs zu nutzen und sie zu modifizieren, um Text, Fotos und Anmerkungen einzufügen. Mit IronPDF können Sie aus jeder HTML-Website oder aus Webinhalten, die sich für die Erstellung von Berichten, Rechnungen und anderen Dokumenten mit vorgegebenen Stilen eignen, PDF-Dateien in professioneller Qualität erzeugen.

Zu den fortgeschrittenen Funktionen gehören die Bearbeitung von Seitenlayouts, die Verschlüsselung von Dokumenten und die Textextraktion aus einem PDF-Dokument. Wenn die Entwickler besser mit PDFs umgehen können, können sie auch den allgemeinen Nutzen Ihrer Produkte verbessern.

Installation der IronPDF-Bibliothek

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

pip install ironpdf

Einbindung von igraph in IronPDF

Dies sind die Schritte, die Sie in Python durchführen würden, um igraph und IronPDF zusammenzuführen: Zunächst erstellen Sie ein Diagramm mit igraph und zeigen es an. Anschließend wird die resultierende Visualisierung in eine PDF-Datei umgewandelt.

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 generiert ein Diagramm mit igraph, visualisiert es mit matplotlib und wandelt es dann mit IronPDF in eine PDF-Datei um. Dieser Code importiert alle erforderlichen Bibliotheken und richtet IronPDF mit einem Lizenzschlüssel ein. Erstellen Sie einen leeren Graphen mit fünf Scheitelpunkten und sechs Kanten und fügen Sie zur besseren Übersichtlichkeit Gewichtungen und Beschriftungen hinzu.

Das Diagramm ist kreisförmig angelegt, und für die Darstellung wird matplotlib mit verschiedenen Visualisierungseigenschaften verwendet, z. B. Farbe und Größe der Scheitelpunkte sowie die Breite der Kantenlinien. Danach wird das Ergebnis als Bilddatei, result.png, gespeichert. Schließlich wird sie mit dem ImageToPdfConverter von IronPDF in ein PDF-Dokument, result.pdf, umgewandelt. Die Erstellung von Diagrammen, die Visualisierung und die PDF-Produktion werden in einem Arbeitsablauf kombiniert.

Ausgegebene PDF-Datei

igraph python (How it Works for Developers): Abbildung 6 - Ausgegebenes PDF

Lizenzierung

Es wird ein Lizenzschlüssel benötigt, damit der Code ohne Wasserzeichen funktionieren kann. Sie können sich für eine kostenlose Testlizenz unter diesem Link registrieren. Bitte beachten Sie, dass Sie sich auch ohne Identitätsnachweis für eine Übersetzung anmelden können. Um sich für die kostenlose Testversion zu registrieren, müssen Sie lediglich Ihre E-Mail-Adresse eingeben.

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

Abschluss

Mit der Leistungsfähigkeit von IronPDF und igraph können Sie Lösungen für die Visualisierung und Darstellung komplexer Graphdaten entwickeln. Mit igraph können Sie auf einfache Weise komplexe Netzwerke erstellen und analysieren, während Sie IronPDF für die nahtlose Konvertierung von Datenvisualisierungen in professionelle PDF-Dokumente verwenden. Mit dieser Kombination können Sie umfassende Berichte erstellen, die sowohl grafische Analysen als auch visuelle Darstellungen enthalten.

Diese Integration ermöglicht die Entwicklung verschiedener Anwendungen, die eine umfassende Netzwerkdokumentation erfordern, einschließlich akademischer Forschung, Geschäftsanalysen und datengesteuerter Berichterstattung. Darüber hinaus kombiniert es eine qualitativ hochwertige Dokumentenausgabe mit sehr leistungsfähigen Manipulationsmöglichkeiten mit Grafiken. Darüber hinaus bietet Iron Software eine Vielzahl von Bibliotheken, die die Entwicklung von Anwendungen für eine Reihe von Plattformen und Betriebssystemen wie Windows, Android, MAC, Linux und andere erleichtern.

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