2013-04-18 39 views
0

我使用networkxmatplotlib如何设置节点颜色与给定的图形

现在我想设置节点的颜色,和我读文本文件中的图形

G=nx.read_edgelist("Edge.txt") 
nx.draw(G) 
plt.show() 

这里是例子的边锉

0 1 
0 2 
3 4 

这里是我做到了,失败

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.read_edgelist("Edge.txt") 
pos = nx.spring_layout(G) 
nx.draw_networkx_nodes(G,pos,node_list=[0,1,2],node_color='B') 
nx.draw_networkx_nodes(G,pos,node_list=[3,4],node_color='R') 
plt.show() 

结果是很多蓝色节点没有边缘

所以,如果我想设置NodeListA = [0,1,2]蓝,NodeListB = [3,4],以红色

我该怎么做?

回答

1

通过调用顶级函数,draw_networkx_nodes

明确画出节点并在节点列表传递作为参数node_color的参数node_list值,值,像这样

nx.draw_network_nodes(G, pos, node_list=NodeListA, node_color="#5072A7") 

参数pos只是一个python字典,其键是图的节点,值是x,y的位置;一个容易提供的pos是通过你的图形对象到spring_layout这将返回字典。

pos = nx.spring_layout(G) 

替代地,可以在字典中直接传递,例如,

pos = { 
     0:(2,2), 
     1:(3,5), 
     2:(1,2), 
     3:(5,5), 
     4:(7,4) 
} 

在OP来执行代码的可能的原因是,以read_edgelist所述呼叫;特别是传入的文件可能格式不正确。

这里是如何检查,以及如何解决它:

G = nx.path_graph(5) 

df = "/path/to/my/graphinit.edgelist" 

nx.write_edgelist(G, df) # save a properly formatted edgelist file 

G = nx.read_edgelist(df) # read that file back in 
+0

我试试吧。但我不知道如何设置pos。确切地说,我有近300个节点和800个边缘。当我使用nx.spring_layout()时,出现错误。 –

+0

你需要传入你的图形对象,“G”,nx.spring_layout(G) – doug

+0

是的,我做过。让我告诉你我在做什么 –

相关问题