【问题标题】:Can not draw more than 8 nodes by networkx raising `NetworkXError: Node 8 has no position` error通过networkx引发`NetworkXError:节点8没有位置`错误,无法绘制超过8个节点
【发布时间】:2016-06-30 14:38:57
【问题描述】:

我正在尝试通过 networkx 绘制图形。但是,下面的代码遇到的错误是

NetworkXError: 节点 8 没有位置

我相信只允许少于七个节点,但我不明白为什么。

请说明错误发生的原因以及如何修复以绘制超过 8 个节点。

import networkx as nx

# new_words = ["1","2","3","4","5","6","7"] => It does not occur the error
new_words = ["1","2","3","4","5","6","7","8"]
target_word = ["0"]

G=nx.cubical_graph()
pos=nx.spring_layout(G)

nx.draw_networkx_nodes(G,pos,
                       nodelist=[0],
                       node_color='r',
                       node_size=50, alpha=0.8)
nx.draw_networkx_nodes(G,pos,
                       nodelist=range(1, len(new_words)+1),
                       node_color='w',
                       node_size=50, alpha=0.8)

nx.draw_networkx_edges(G,pos,
                       edgelist=[(0,i) for i in range(1,len(new_words)+1)])


# some math labels
labels={}
labels[0]=target_word
for idx in range(0,len(new_words)):
    labels[idx+1] = new_words[idx]

nx.draw_networkx_labels(G,pos,labels)

错误信息是:

---------------------------------------------------------------------------
NetworkXError                             Traceback (most recent call last)
<ipython-input-16-5ddab3dbe0d6> in <module>()
     15                        nodelist=range(1, len(new_words)+1),
     16                        node_color='w',
---> 17                        node_size=50, alpha=0.8)
     18 
     19 nx.draw_networkx_edges(G,pos,

/Users/sudou/.pyenv/versions/anaconda-2.0.1/lib/python2.7/site-packages/networkx/drawing/nx_pylab.pyc in draw_networkx_nodes(G, pos, nodelist, node_size, node_color, node_shape, alpha, cmap, vmin, vmax, ax, linewidths, label, **kwds)
    384         xy = numpy.asarray([pos[v] for v in nodelist])
    385     except KeyError as e:
--> 386         raise nx.NetworkXError('Node %s has no position.'%e)
    387     except ValueError:
    388         raise nx.NetworkXError('Bad value in node positions.')

NetworkXError: Node 8 has no position.

【问题讨论】:

  • 这将有助于其他人显示异常抛出的位置(哪一行)
  • @Andreas_D 谢谢。我添加了错误消息和堆栈跟踪。

标签: python networkx


【解决方案1】:

nx.cubical_graph() 有 8 个节点。即[0,1,2,3,4,5,6,7]。您发送了一个 nodelist,其中包含节点 8,这不是您的图表的一部分。您正在绘制的图形是一个立方体的图形 - 8 个节点(顶点)和 12 个边(立方体的边)。

您要求它绘制 8 个节点图的 9 个节点。因此它无法找到该节点的去向。

回答您关于如何在图表中绘制超过 8 个节点的问题,您必须从包含超过 8 个节点的图表开始。

【讨论】:

  • 谢谢。是否可以绘制包含超过 9 个节点的标记图?
  • 当然可以。但是图表本身必须包含您在nodelist 中列出的所有节点。除非您有理由指定节点的子集,否则您甚至不应该包含可选的 nodelist 参数。
猜你喜欢
  • 2016-04-23
  • 2012-12-03
  • 1970-01-01
  • 2019-06-22
  • 2012-08-21
  • 2017-11-28
  • 2011-04-28
  • 2022-07-21
  • 1970-01-01
相关资源
最近更新 更多