Inhaltsverzeichnis:
Video: How I Learned to Code in Less Than 2 Months 2024
Diagramme sind nützlich für Datenwissenschaftler. Ein Graph ist eine Darstellung von Daten, die die Verbindungen zwischen Datenpunkten unter Verwendung von Linien in Pythopn zeigen. Der Zweck besteht darin, zu zeigen, dass sich einige Datenpunkte auf andere Datenpunkte beziehen, jedoch nicht auf alle Datenpunkte, die im Diagramm erscheinen.
Denken Sie an eine Karte eines U-Bahn-Systems. Jede der Stationen verbindet sich mit anderen Stationen, aber keine einzige Station verbindet sich mit allen Stationen im U-Bahn-System. Graphen sind wegen ihrer Verwendung in der Social-Media-Analyse ein beliebtes Thema in der Datenwissenschaft. Bei der Durchführung von Social-Media-Analysen stellen Sie Beziehungsnetzwerke wie Freunde oder Geschäftsverbindungen von sozialen Netzwerken wie Facebook, Google+, Twitter oder LinkedIn dar und analysieren diese.
Die beiden gebräuchlichsten Darstellungen von Graphen sind ungerichtet , wobei der Graph einfach die Linien zwischen den Datenelementen zeigt und auf verweist, wobei Pfeile, die der Linie hinzugefügt wurden, angezeigt werden. diese Daten fließen in eine bestimmte Richtung. Betrachten Sie zum Beispiel eine Darstellung eines Wassersystems. Das Wasser würde in den meisten Fällen nur in eine Richtung fließen, so dass Sie einen gerichteten Graphen verwenden könnten, um nicht nur die Verbindungen zwischen Quellen und Zielen für das Wasser darzustellen, sondern auch die Wasserrichtung mithilfe von Pfeilen anzuzeigen.
Entwicklung von ungerichteten Graphen
Ein ungerichteter Graph zeigt einfach Verbindungen zwischen Knoten. Der Ausgang liefert keine Richtung von einem Knoten zum nächsten. Wenn zum Beispiel eine Verbindung zwischen Webseiten hergestellt wird, wird keine Richtung impliziert. Im folgenden Beispiel wird gezeigt, wie ein ungerichteter Graph erstellt wird.
importiere networkx als nx import matplotlib. pyplot als plt G = nx. Graph () H = nx. Graph () G. add_node (1) G. add_nodes_from ([2, 3]) G. add_nodes_from (Bereich (4, 7)) H. add_node (7) G. add_nodes_from (H) G. add_edge (1, 2) G. add_edge (1, 1) G. add_edges_from ([(2, 3), (3, 6), (4, 6), (5, 6)]) H. add_edges_from ([(4, 7), (5, 7), (6, 7)]) G. add_edges_from (H. Kanten ()) nx. draw_networkx (G) plt. show ()
In diesem Beispiel wird das Diagramm mit einer Reihe verschiedener Techniken erstellt. Es beginnt mit dem Importieren des Networkx-Pakets. Um ein neues ungerichtetes Diagramm zu erstellen, ruft der Code den Graph () - Konstruktor auf, der eine Reihe von Eingabeargumenten als Attribute verwenden kann. Sie können jedoch einen perfekt verwendbaren Graphen erstellen, ohne Attribute zu verwenden. Dies ist in diesem Beispiel der Fall.
Der einfachste Weg zum Hinzufügen eines Knotens ist das Aufrufen von add_node () mit einer Knotennummer. Sie können mit add_nodes_from () auch eine Liste, ein Wörterbuch oder einen Bereich () von Knoten hinzufügen. In der Tat können Sie Knoten aus anderen Graphen importieren, wenn Sie möchten.
Auch wenn die im Beispiel verwendeten Knoten auf Zahlen basieren, müssen Sie keine Zahlen für Ihre Knoten verwenden. Ein Knoten kann einen einzelnen Buchstaben, eine Zeichenfolge oder sogar ein Datum verwenden. Knoten haben einige Einschränkungen. Beispielsweise können Sie keinen Knoten mit einem booleschen Wert erstellen.
Knoten haben zu Beginn keine Konnektivität. Sie müssen Verbindungen (Kanten) zwischen ihnen definieren. Um eine einzelne Kante hinzuzufügen, rufen Sie add_edge () mit den Nummern der Knoten auf, die Sie hinzufügen möchten. Wie bei Knoten können Sie add_edges_from () verwenden, um mehr als eine Kante mithilfe einer Liste, eines Wörterbuchs oder eines anderen Diagramms als Eingabe zu erstellen. Hier ist die Ausgabe von diesem Beispiel (Ihre Ausgabe kann leicht abweichen, sollte aber die gleichen Verbindungen haben).
Ungerichtete Graphen verbinden Knoten miteinander, um Muster zu bilden.Entwickeln von gerichteten Graphen
Sie verwenden gerichtete Graphen, wenn Sie eine Richtung angeben müssen, z. B. von einem Startpunkt zu einem Endpunkt. Wenn Sie eine Karte erhalten, die Ihnen zeigt, wie Sie von einem bestimmten Punkt zu einem anderen gelangen, werden der Startknoten und der Endknoten als solche markiert und die Linien zwischen diesen Knoten (und allen Zwischenknoten) zeigen die Richtung an.
Deine Graphen müssen nicht langweilig sein. Sie können sie auf alle möglichen Arten verkleiden, so dass der Betrachter auf verschiedene Weise zusätzliche Informationen erhält. Beispielsweise können Sie benutzerdefinierte Beschriftungen erstellen, bestimmte Farben für bestimmte Knoten verwenden oder sich auf Farbe verlassen, um den Benutzern die Bedeutung ihrer Diagramme zu vermitteln.
Sie können auch die Kantenliniengewichtung ändern und andere Techniken verwenden, um einen bestimmten Pfad zwischen Knoten als den besseren zu markieren. Das folgende Beispiel zeigt viele (aber nicht alle) Möglichkeiten, wie Sie einen gerichteten Graphen verkleinern und interessanter machen können:
importiere networkx als nx import matplotlib. pyplot als plt G = nx. DiGraph () G. add_node (1) G. add_nodes_from ([2, 3]) G. add_nodes_from (Bereich (4, 6)) G. add_path ([6, 7, 8]) G. add_edge (1, 2) G. add_edges_from ([(1, 4), (4, 5), (2, 3), (3, 6), (5, 6)]) Farben = ['r', 'g', 'g', 'g', 'g', 'm', 'm', 'r'] etiketten = {1: 'Start', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: 'Ende'} Größen = [800, 300, 300, 300, 300, 600, 300, 800] nx. draw_networkx (G, node_color = Farben, node_shape = "D", with_labels = True, labels = Labels, node_size = Größen) plt. show ()
Das Beispiel beginnt mit dem Erstellen eines Richtdiagramms mit dem DiGraph () - Konstruktor. Sie sollten beachten, dass das NetworkX-Paket auch die Graphentypen MultiGraph () und MultiDiGraph () unterstützt. Sehen Sie sich diese Liste aller Diagrammtypen an.
Das Hinzufügen von Knoten funktioniert ähnlich wie ein ungerichteter Graph. Sie können einzelne Knoten mit add_node () und mehreren Knoten mit add_nodes_from () hinzufügen. Mit dem Aufruf add_path () können Sie Knoten und Kanten gleichzeitig erstellen. Die Reihenfolge der Knoten im Aufruf ist wichtig. Der Fluss von einem Knoten zu einem anderen ist von links nach rechts in der Liste, die dem Anruf übergeben wird.
Das Hinzufügen von Kanten ist ähnlich wie das Arbeiten mit einem ungerichteten Graphen. Sie können add_edge () verwenden, um eine einzelne Kante hinzuzufügen, oder add_edges_from (), um mehrere Kanten gleichzeitig hinzuzufügen. Die Reihenfolge der Knotennummern ist jedoch wichtig.Der Fluss geht von dem linken Knoten zu dem rechten Knoten in jedem Paar.
In diesem Beispiel werden spezielle Knotenfarben, Beschriftungen, Formen (nur eine Form wird verwendet) und Größen für die Ausgabe hinzugefügt. Sie rufen immer noch draw_networkx () auf, um die Aufgabe auszuführen. Wenn Sie jedoch die angezeigten Parameter hinzufügen, ändert sich das Aussehen des Diagramms. Beachten Sie, dass Sie with_labels auf True setzen müssen, um die vom label-Parameter bereitgestellten Labels zu sehen. Hier ist die Ausgabe dieses Beispiels.
Verwenden Sie gerichtete Graphen, um die Richtung zwischen Knoten anzuzeigen.