2012-12-11 15 views
9

私は距離行列からグラフをプロットするプログラムを書いています。それは正常に動作しています。 今、私は特定のノードと特定のエッジが私の選択の特定の色になるようにします。それ、どうやったら出来るの?NetworkxとGraphvizの特定のノードの色付け

プログラムはPythonであり、あなたはGraphvizのが理解属性を使用する必要が描画を行うためにGraphvizのを使用しているのでNetworkxとGraphvizの

import networkx as nx 
import numpy as np 
import pickle 
from random import randint 

p_file = open('pickles/distance') 
Dist = pickle.load(p_file) 
p_file.close() 
p_file = open('pickles/names') 
Names = pickle.load(p_file) 
p_file.close() 

dt = [('len', float)] 
A = np.array(Dist)*5 
A = A.view(dt) 

G = nx.from_numpy_matrix(A) 
G = nx.relabel_nodes(G, dict(zip(range(len(G.nodes())),Names)))  

G = nx.to_agraph(G) 
G.node_attr.update(ndcolor="red", node="DC", style="filled") 
G.edge_attr.update(color="none") 
G.draw('P1.png', format='png', prog='neato') 

答えて

14

を使用しています。あなたは私のコードでは、私は距離行列からノードやエッジを追加してい見ることができるように参照してください

import networkx as nx 
G = nx.Graph() 

G.add_node(1,color='red',style='filled',fillcolor='blue',shape='square') 
G.add_node(2,color='blue',style='filled') 
G.add_edge(1,2,color='green') 
G.node[2]['shape']='circle' 
G.node[2]['fillcolor']='red' 

A = nx.to_agraph(G) 
A.layout() 
A.draw('color.png') 
print A.to_string() 

http://www.graphviz.org/content/attrs

strict graph { 
    graph [bb="0,0,107.21,46.639"]; 
    node [label="\N"]; 
    1 [color=red, 
     fillcolor=blue, 
     height=0.5, 
     pos="18,28.639", 
     shape=square, 
     style=filled, 
     width=0.5]; 
    2 [color=blue, 
     fillcolor=red, 
     height=0.5, 
     pos="89.21,18", 
     shape=circle, 
     style=filled, 
     width=0.5]; 
    1 -- 2 [color=green, 
     pos="36.338,25.899 47.053,24.298 60.519,22.286 71.18,20.694"]; 
} 

enter image description here

+1

を与えます。この場合、あなたが言及した方法は適用できません。あなたは他の方法を知っていますか? – Anirudh

+1

グラフGを作成した後に属性を追加できます。G.node [nodename] ['color'] = 'red'などを使用します。 – Aric

+1

ああ、うまくいきました!ありがとうございます。他の人にも役立つように、これを回答に追加することはできますか? – Anirudh

関連する問題