2012-11-22 16 views
23

Geniş bir düğüm grafikleri ve yönlendirilmiş kenarlarım var. Ayrıca, her bir düğüme atanan ek bir değerler listesi var.Düğüm değerlerine göre ağda düğümler için farklı renk çizin

Şimdi her düğümün rengini düğüm değerlerine göre değiştirmek istiyorum. Yani, örneğin, çok yüksek bir değere sahip kırmızı ve düşük bir değer mavi olan düğümler (bir ısı haritasına benzer). Bunu bir şekilde başarmak mümkün mü? Ağ üzerinden değilse, Python'daki diğer kütüphaneler için de açıktayım.

cevap

42
import networkx as nx 
import numpy as np 
import matplotlib.pyplot as plt 

G = nx.Graph() 
G.add_edges_from(
    [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'), 
    ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')]) 

val_map = {'A': 1.0, 
      'D': 0.5714285714285714, 
      'H': 0.0} 

values = [val_map.get(node, 0.25) for node in G.nodes()] 

nx.draw(G, cmap=plt.get_cmap('jet'), node_color=values) 
plt.show() 

values içinde

enter image description here


numaraları G.nodes() düğümler ile ilişkili elde edilir. Yani, values'daki ilk sayı, G.nodes()'daki ilk düğümle ve benzer şekilde ikinci ve benzerleriyle ilişkilidir.

+0

Teşekkürler, bu gerçekten yararlıdır. Hala node_color dizisinin tam olarak karşılık gelen düğüme nasıl eşlendiğinden emin değilim. Örneğin, ilgili etiketli 3 düğüme sahibim (13, 557, 35). Şimdi farklı düğüm renklerini tam olarak nasıl atadım? – fsociety

+1

'node_color' öğesine sağlanan değerler,' G.nodes() 'de listelenen düğümlerle aynı sırada olmalıdır. 'Val_map' değerlerinin rasgele bir eşlemesini nasıl alabileceğinizi ve 'değerler' listesini doğru sırada nasıl oluşturabileceğinizi göstermek için kodu değiştirdim. – unutbu

+0

Çok büyük bir grafiğim varsa, hangi rengin hangi değere karşılık geldiğini nasıl bulabilirim? – MysticForce

İlgili konular