在NetworkX Graph中绘制标签

时间:2015-04-16 22:59:48

标签: networkx

我正在制作一个大的二分图,我能够制作一个图但我无法在图中标记节点,我感兴趣的是简单地用他们的名字标记nodelistDept节点我已经尝试了所有东西,但似乎没有什么工作,任何帮助将不胜感激,这是代码:

pos=nx.networkx.spring_layout(G)
#draw nodes
nx.draw_networkx_nodes(G, pos, nodelist=nodelistDept,node_color = 'r', node_size = 400)
nx.draw_networkx_nodes(G, pos, nodelist=nodelistSup,node_color= 'w', node_size=50)
#draw edges
nx.draw_networkx_edges(G,pos,width=0.5,alpha=0.5)
nx.draw_networkx_edges(G,pos,edgelist=edgeList)
#draw the labels
#labels = nodelistDept
#nx.draw_networkx_labels(G,pos)

nx.draw_networkx_labels(G,pos, font_size=12,font_family='sans-serif')
plt.show()

3 个答案:

答案 0 :(得分:2)

我不知道这是否是一个愚蠢的答案,但你曾尝试过:

 nx.draw_spectral(G, with_labels=True) ?

它对我有用。

答案 1 :(得分:0)

我认为错误在其他地方。当我运行代码的修改版本时,如下所示:

import networkx as nx
import pylab as plt

G=nx.fast_gnp_random_graph(15,0.1)
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos)
nx.draw_networkx_edges(G,pos)
nx.draw_networkx_labels(G,pos)

plt.savefig('labels.png')

我得到了

enter image description here

所以标签就在那里。


在重新阅读您的问题时

编辑,我想您可能会问如何标记节点的子集。请澄清这是否是您想要的。

如果您尝试仅标记节点子集:

subnodelist = [1,2,3,4,5,6,7,8]
labels = {k:k for k in subnodelist}    
plt.clf()
nx.draw_networkx_nodes(G,pos)
nx.draw_networkx_edges(G,pos)
nx.draw_networkx_labels(G,pos, labels)
plt.savefig('labels2.png')

这给出了

enter image description here

我对labels= {k:k for k in subnodelist}所做的是创建一个dict,每个节点标签都与其名称相关联。

其他可以解释问题的是使用show

当我在ipython中运行我的macbook上的plt.show()时,它无法显示标签,但这是因为渲染的一些问题 - 我收到了一条我从未尝试过的长错误信息整理。当我保存数字时它很好。有关错误的更多详细信息,请访问:pylab/networkx; no node labels displayed after update

答案 2 :(得分:0)

您缺少要在参数的最后一行中作为参数传递的“标签” 字典。 正确的代码是:

nx.draw_networkx_labels(G,pos, labels=labels font_size=12,font_family='sans-serif')