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!

  • Probleme bei der Installation von graphviz für python3 auf ubuntu 14.04
  • Auslegen eines großen Graphen mit graphviz
  • Networkx: wie man Knoten- und Kantenattribute in einer Graphenzeichnung anzeigt
  • Wie kann man ein Diagramm / Diagramm wie den Besucherfluss von Google Analytics generieren?
  • Pygraphviz / networkx Set Knoten Ebene oder Ebene
  • Was könnte dazu führen, dass NetworkX & PyGraphViz gut funktioniert, aber nicht zusammen?
  • 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?

  • Python-Attribut-Fehlerobjekt hat kein Attribut
  • Warum erkennt die Python-Klasse keine statische Variable
  • So greifen Sie auf Funktionen von Methoden in Python zu
  • Dreifache Vererbung verursacht Metaklassenkonflikte ... Manchmal
  • Bedeutung von @classmethod und @staticmethod für Anfänger?
  • Holen Sie sich Klasse Eltern (n)?
  • 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.