Colormap funktioniert nicht in NetworkX

Ich versuche, farbige Graphen zu machen. Ich laufe weiter in seltsames Verhalten.

Ich kann nicht die Farbkarte bekommen, um den Knoten automatisch Farben zuzuordnen. Alle Knoten, die ich versuche, dies mit Wind auf die gleiche Farbe zu machen!

Bildbeschreibung hier eingeben

Die Schwimmer sind die Farben, die den 6 Knoten zugewiesen werden sollen. Zwei der 7 Schwimmer sind die gleichen, weil es ein Zyklus ist.

Wenn ich die Farbe der Knoten ( node_color=['r'] usw.) manuell spezifiziere, funktioniert es auch nicht nur für die Wurzel (in rot), sondern auch für die Knoten im Zyklus.

Code:

 t=0 import networkx as nx import matplotlib.pyplot as plt G = nx.DiGraph() #MAKE G.add_node("ROOT") #make all others for i in x: for ct,j in enumerate(i): G.add_node(j[t] ) if ct ==0: G.add_edge("ROOT", j[t]) else: G.add_edge(i[ct-1][t], i[ct][t]) nx.write_dot(G,'g') #DRAW pos=nx.graphviz_layout(G,prog='neato') nx.draw_networkx_nodes(G,pos, nodelist=['ROOT'], node_color=['r']) #draw all others for i in x: for ct,j in enumerate(i): print CD[j[t]]#, np.around([CD[j[t]]],decimals=2) nx.draw_networkx_nodes(G,pos, nodelist = [j[t]], cmap=plt.get_cmap('Set3') ,node_color=np.around([CD[j[t]]],decimals=2))#float(c) for c in nodecolors(x[i],1)] ) nx.draw_networkx_edges(G, pos,arrows=True) #Display properties limits=plt.axis('off') 

Hier ist x ein Array von Knotennamen, und CD ist ein Wörterbuch, das Namen zu floats markiert. Für die Vollständigkeit sind hier:

 x = [[(1.000004+0j)], [(-0.5000065+0.86602454j)], [(-0.5000065-0.86602454j)],[(1.000004+0j)],[(-0.5000065+0.86602454j)],[(-0.5000065-0.86602454j)]] CD = {(-0.50000649677999998-0.8660245358880001j): 0.7142857142857143, (-0.50000649677999998+0.8660245358880001j): 0.5714285714285714, (-0.50000049676800007-0.86603492822400008j): 0.14285714285714285, (-0.50000049676800007+0.86603492822400008j): 0.42857142857142855, 0j: 0.0, (0.99999200001600019-0j): 0.8571428571428571, (1.000004000004+0j): 0.2857142857142857} 

Colormap-Funktionalität funktioniert für mich in anderen Fällen, also habe ich das Gefühl, dass ich einen Grundfehler mache. Irgendwelche Ideen?

  • Wie kann ich die spezifischen Bigram-Worte zählen?
  • Tags mit: in name in lxml
  • Wie erhöhst du den Dateinamen in Python
  • Ändern Sie alle Texte in Datei in Kleinbuchstaben
  • Ein sehr einfaches Multithreading-Parallel-URL-Abrufen (ohne Warteschlange)
  • Sortieren Sie eine Teilmenge einer Python-Liste, um die gleiche relative Reihenfolge wie in einer anderen Liste zu haben
  • Open Source Software zum Übersetzen von Sprache in Audiodateien
  • Matplotlib: Ticklabels zwischen Zecken bewegen
  • One Solution collect form web for “Colormap funktioniert nicht in NetworkX”

    Da dies alt ist und Lack die Frage in den Kommentaren beantwortet hat, kopiere ich hier seine Antwort und akzeptiere:

    Ich kann deinen Code nicht ohne Fehler TypeError: 'complex' object has no attribute '__getitem__' on j[t] ( TypeError: 'complex' object has no attribute '__getitem__' on j[t] ) aber es ist das gleiche Problem wie deine andere Frage, die ich beantwortet habe (stackoverflow.com/questions/27831022/… ). Weil du nur einen Knoten zu einem Zeitpunkt an draw_networkx_nodes , "normalisiert" das Längen-1-Array von Farben ohne Rücksicht auf die anderen Knoten. Sie sollten die Schleife loswerden und alle Knoten in einem Array an draw_networkx_nodes .

    Python ist die beste Programmiersprache der Welt.