Ich habe ein reguläres Netz von NxN
Knoten. Ich kann es plotten, aber ich würde auch gerne seine minimum spanning tree plotten, die ein "Untergraph ist, der alle Ecken enthält und ein Baum ist". DiesePython: Wie visualisiert man den Minimum Spanning Tree eines Netzwerks?
ist, wie ich das Netzwerk zu erstellen:
from __future__ import print_function, division
import numpy
from numpy import *
import networkx as nx
from networkx import *
import matplotlib.pyplot as plt
N=30
G=nx.grid_2d_graph(N,N)
pos = dict((n, n) for n in G.nodes())
labels = dict(((i, j), i + (N-1-j) * N) for i, j in G.nodes())
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=False, node_size = 15)
Dies ist, wie ich das Minimum Spanning Tree berechnen:
T=nx.minimum_spanning_tree(G)
Dies erzeugt eine grafische Darstellung wie G
, mit Der Unterschied, dass T
hat die gleichen Knoten wie G
und eine Auswahl seiner Kanten. Daher würde Ich mag T
zeichnen, und das ist, was ich getan habe:
plt.figure()
nx.draw_networkx(G, pos=pos2, with_labels=False, node_size = 15)
plt.show()
Aber ich habe einfach das Netzwerk wieder aufgetragen. Wie kann ich die letzten Zeilen ändern, um sicherzustellen, dass mein Minimum Spanning Tree geplottet wird?
Pass T anstelle von G auf den zweiten draw_networkx sein? – DaVinci
Ich habe einen sehr dummen Fehler gemacht. Ich entschuldige mich. – FaCoffee