如何使用给定图表设置节点颜色

时间:2013-04-18 07:52:34

标签: matplotlib networkx

我正在使用 networkx matplotlib

现在我想设置节点的颜色,我从文本文件中读取图表

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

以下是示例

的Edge文件
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 个答案:

答案 0 :(得分:1)

通过调用顶级函数 draw_networkx_nodes

显式绘制节点

并传入您的节点列表作为参数 node_list 的值,并传递参数 node_color 的值,如此

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