我正在制作一个大的二分图,我能够制作一个图但我无法在图中标记节点,我感兴趣的是简单地用他们的名字标记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()
答案 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')
我得到了
所以标签就在那里。
编辑,我想您可能会问如何标记节点的子集。请澄清这是否是您想要的。
如果您尝试仅标记节点子集:
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')
这给出了
我对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')