2017-07-06 2 views
0

Ich möchte für jeden Knoten ein anderes Alpha festlegen. Es ist einfach, für jeden Knoten eine andere Farbe festzulegen, aber Alpha schneidet nur einen einzelnen Wert ab. Weiß jemand, wie man das macht?networkx: verschiedene Alpha für jeden Knoten festlegen?

(Mein Ziel ist es, einen Farbverlauf von blau zu rot haben. Wenn der Wert unter dem Mittelpunkt ist es blau ist und wenn darüber ist rot. Alpha der Steigung eingestellt würde.)

nx.draw_networkx_nodes(g,pos=pos,nodelist=nodelist, 
node_color=node_color, alpha=1.0) 

Antwort

1

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.

+0

Alpha steuert Transparenz und Transparenz beeinflusst, wie eine Farbe aussieht :) – Leigh

+0

Sind Sie sicher, dass 'rgba_colors' verändert wurde? Das scheint sich für mich nicht zu ändern. – Joel

+0

@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). –

Verwandte Themen