2012-11-22 10 views
23

के आधार पर नेटवर्कक्स में नोड्स के लिए अलग रंग बनाएं, मेरे पास नोड्स और निर्देशित किनारों का एक बड़ा ग्राफ है। इसके अलावा, मेरे पास प्रत्येक नोड को आवंटित मानों की एक अतिरिक्त सूची है।अपने नोड मान

अब मैं प्रत्येक नोड के रंग को उनके नोड मान के अनुसार बदलना चाहता हूं। तो उदा।, नोड्स को बहुत अधिक मूल्य वाले लाल और कम मूल्य वाले नीले रंग वाले (एक हीटमैप के समान) के साथ ड्रॉइंग करें। क्या यह किसी भी तरह से हासिल करने के लिए आसानी से संभव है? यदि नेटवर्कएक्स के साथ नहीं है, तो मैं पाइथन में अन्य पुस्तकालयों के लिए भी खुला हूं।

उत्तर

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() 

पैदावार

enter image description here


values में संख्या G.nodes() में नोड्स के साथ जुड़े रहे हैं। यह कहना है कि values में पहला नंबर G.nodes() में पहले नोड से जुड़ा हुआ है, और इसी तरह दूसरे के लिए, और इसी तरह।

+0

धन्यवाद, यह वास्तव में सहायक है। मुझे अभी भी यकीन नहीं है कि node_color सरणी को इसी नोड में मैप किया गया है। तो उदा।, मेरे पास संबंधित लेबल (13, 557, 35) के साथ 3 नोड्स हैं। अब मैं अलग-अलग नोड रंग कैसे निर्दिष्ट करूं? – fsociety

+1

'node_color' को दिए गए मान उसी क्रम में होना चाहिए जैसा कि 'जी। नोड्स') में सूचीबद्ध नोड्स के रूप में होना चाहिए। मैंने यह कोड दिखाने के लिए कोड संशोधित किया है कि आप 'val_map' मानों के मनमाने ढंग से मैपिंग कैसे ले सकते हैं और सही क्रम में' मानों 'सूची उत्पन्न कर सकते हैं। – unutbu

+0

यदि मेरे पास बहुत बड़ा ग्राफ है, तो मुझे यह कैसे पता चलेगा कि कौन सा रंग किस मूल्य से मेल खाता है? – MysticForce

संबंधित मुद्दे