Ich habe einige Knoten aus einem Skript, die ich einem Diagramm zuordnen möchte. Im Folgenden möchte ich Arrow verwenden, um von A nach D zu gelangen, und wahrscheinlich habe ich auch die Kante eingefärbt (rot oder so).
Dies ist im Grunde wie ein Pfad von A nach D, wenn alle anderen Knoten vorhanden sind. Sie können sich jeden Knoten als Städte vorstellen. Für die Fahrt von A nach D sind Anweisungen erforderlich (mit Pfeilspitzen).
Dieser Code unten erstellt das Diagramm
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edges_from(
[('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])
val_map = {'A': 1.0,
'D': 0.5714285714285714,
'H': 0.0}
values = [val_map.get(node, 0.25) for node in G.nodes()]
nx.draw(G, cmap = plt.get_cmap('jet'), node_color = values)
plt.show()
aber ich möchte so etwas wie im Bild gezeigt.
Pfeilspitzen des ersten Bildes und die Kanten in roter Farbe auf das zweite Bild.
(C, E)
ist nicht rot, weil ich die Kanten ausgewählt habe,red_edges
als ich noch mit Ihrem ungerichteten Diagramm gearbeitet habe, sondern nur zufällig aus den von zurückgegebenen Kanten ausgewählt habeG.edges()
. Es sollte seinred_edges = [('A', 'C'), ('E', 'C')]
.draw_networkx_edges()
. Ich habe den Code bereinigt und die DiGraph-Probleme behoben.Ich habe dies nur der Vollständigkeit halber angegeben. Ich habe viel von Marius und Mdml gelernt. Hier sind die Kantengewichte. Entschuldigung für die Pfeile. Sieht so aus, als wäre ich nicht der einzige, der sagt, dass nicht geholfen werden kann. Ich konnte dies mit ipython notebook nicht rendern. Ich musste direkt von Python gehen, was das Problem war, meine Kantengewichte früher zu bekommen.
quelle
node_labels = {node:node for node in G.nodes()}; nx.draw_networkx_labels(G, pos, labels=node_labels)
.G.add_edges_from()
Linie festzulegen, ohne den Start- und Endpunkt manuell eingeben zu müssen? Vielleicht Kanten von a hinzufügendict
?Anstelle von regulärem nx.draw möchten Sie möglicherweise Folgendes verwenden:
Beispielsweise:
Sie können Optionen hinzufügen, indem Sie diese ** Variable wie folgt initialisieren:
Auch einige Funktionen unterstützen die
directed=True parameter
In diesem Fall wird dieser Zustand ist der Standard ein:Die networkx-Referenz finden Sie hier .
quelle
Sie müssen ein gerichtetes Diagramm anstelle eines Diagramms verwenden, d. H.
Erstellen Sie dann eine Liste der Kantenfarben, die Sie verwenden möchten, und übergeben Sie diese an
nx.draw
Kantenfarben, die (wie von @Marius gezeigt).Wenn ich das alles zusammenstelle, bekomme ich das Bild unten. Immer noch nicht ganz das andere Bild, das Sie zeigen (ich weiß nicht, woher Ihre Kantengewichte kommen), aber viel näher! Wenn Sie mehr Kontrolle darüber haben möchten, wie Ihr Ausgabediagramm aussieht (z. B. Pfeilspitzen, die wie Pfeile aussehen), sollten Sie NetworkX mit Graphviz ausprobieren .
quelle
Dies ist nur ein einfaches Verfahren zum Zeichnen eines gerichteten Diagramms mit Python 3.x mithilfe von networkx. Nur einfache Darstellung und kann geändert und gefärbt werden usw. Siehe das generierte Diagramm hier .
Hinweis: Es ist nur eine einfache Darstellung. Gewichtete Kanten könnten wie hinzugefügt werden
und daher wieder geplottet.
quelle
quelle