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] 设置为红色

我怎样才能做到这一点?

4

1 回答 1

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
于 2013-04-18T08:30:34.300 回答