Ich habe zwei Listen. Einer von ihnen hat diese Datenstruktur: In jeder Zeile ist das erste Element die ID, die zweite die E-Mail-Adresse.Warum zeigt mein networkx-Diagramm keine Kanten zwischen den Knoten an?
['0', '[email protected]']
['1','[email protected]']
die zweite Liste ist eine Liste „wer mit wem schrieb“, in jeder Reihe mit der ersten ID-Nummer des Sender ist, und der zweite ist der Empfänger
['0', '4']
['0', '6']
['1', '4']
Btw, die Halterungen nicht wirklich Teil der Listen. Das ist mein Jupyter-Notebook-Ausgang. die erste Liste hat ungefähr 2000 und die zweite Liste hat 40000 Zeilen. Im folgenden Code füge ich die Knoten - in diesem Fall die E-Mail-Adressen - aus der ersten Liste hinzu. und dann gehe ich durch die zweite Liste und verwende die gegebenen IDs, um Kanten zwischen den Knoten zu erzeugen.
first =-1
second =-1
for row in idsList:
g.add_nodes_from(row[1])
for row in dncList:
for i in range (len(idsList)):
if (row[0]==idsList[i][0]):
first=i;
elif(row[1]==idsList[i][0]):
second=i
g.add_edge(idsList[first][1],idsList[second][1])
nx.draw_networkx(g,with_labels = False, node_size = 30)
plt.show()
Allerdings kann ich die Kanten zwischen den Knoten nicht sehen. Der obige Code erzeugt den folgenden Graphen. Drucken mit edges()
gibt mir die Liste aller Kanten, also kein Problem. Was fehlt mir hier?
einfach einen Kommentar. Diese for-Schleife ist wegen der gesamten Indexierung schwer zu lesen. 'für i im Bereich (len (idsList)) ...' Wie wäre es mit 'für Index, ID in Enumerate (IDsList): wenn ID [0] == Zeile [0]: erste = Index Elif ID [0] = row [0]: second = index' – Joel