Der Alpha-Wert wird die Transparenz kontrollieren, nicht die Farbe.
Wenn Sie bereits den Parameter node_color
angeben, werden Ihre Knoten farbig dargestellt. Wenn Sie möchten, dass sie basierend auf diesen Intensitäten von Blau zu Rot wechseln, verwenden Sie anstelle von Alpha eine colormap. 'Seismic' wechselt von Rot zu Blau.
nx.draw_networkx_nodes(g,pos=pos,nodelist=nodelist,node_color=node_color, cmp='seismic')
EDIT: ich über einige seltsame Verhalten gestolpert versuchen, tiefer in diese zu graben. Ich hätte gedacht, dass sich das Plotten von Networkx wie das Plot von matplotlib scatter
verhalten und RGB-Farben akzeptieren würde, so dass Sie bestimmte Farben und Transparenz angeben können. Aber wenn ich draw_networkx_nodes
mit einer Reihe von 4-Tupel nenne rgba Farben zu bezeichnen, setzt sie alle Alpha-Werte zu 1.em
rgba_colors = np.zeros((5,4))
rgba_colors[:,0] = np.linspace(1,0,5) #red
rgba_colors[:,2] = np.linspace(0,1,5) #blue
rgba_colors[:,3] = np.linspace(0.1,1,5) #alpha values
plt.scatter([1,2,3,4,5],[1,2,3,4,5], color=rgba_colors)
Dies zeichnet ein paar Punkte mit unterschiedlicher Farbe und Transparenz. Aber, wenn Sie versuchen, mit Networkx zu plotten, hat das resultierende Diagramm nicht nur keine Transparenz, die Variable rgba_colors
wurde tatsächlich geändert.
G = nx.complete_graph(5)
pos = {0: [0,0], 1: [1,1], 2: [2,2], 3: [2,1], 4: [2,3]}
nx.draw_networkx_nodes(G, pos=pos, node_color=rgba_colors)
print(rgba_colors)
Ich bin mir nicht sicher, warum das passiert.
Alpha steuert Transparenz und Transparenz beeinflusst, wie eine Farbe aussieht :) – Leigh
Sind Sie sicher, dass 'rgba_colors' verändert wurde? Das scheint sich für mich nicht zu ändern. – Joel
@Joel Ja, es ist modifiziert. Ich kann das verhindern, indem ich eine Liste von Tupeln anstelle eines 2D-numpy-Arrays verwende, aber der resultierende Graph ist der gleiche. Allerdings verwende ich ältere Versionen von networkx (1.9.1) und matplotlib (1.4.2). –