绘制networkx图表时出现意外错误。

11

我有一个简单的图表需要在屏幕上绘制,这是我的代码:

def gera_grafo(matriz):
grafo = nx.to_networkx_graph(matriz, create_using=nx.Graph)

nx.draw(grafo)
plt.show()

return grafo

矩阵是包含连接权重的邻接表。代码过去一直运行良好,但我必须创建一个新的Python虚拟环境,而自那以后,尽管所有所需库都已正确安装,但在nx.draw()调用时会抛出错误。我得到的错误是:

    Traceback (most recent call last):
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/venv/lib/python3.9/site-packages/networkx/utils/decorators.py", line 396, in _random_state
    random_state_arg = args[random_state_index]
IndexError: tuple index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/criacao_do_grafo.py", line 58, in <module>
    grafo = gera_grafo(matriz)
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/criacao_do_grafo.py", line 39, in gera_grafo
    nx.draw(grafo)
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/venv/lib/python3.9/site-packages/networkx/drawing/nx_pylab.py", line 123, in draw
    draw_networkx(G, pos=pos, ax=ax, **kwds)
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/venv/lib/python3.9/site-packages/networkx/drawing/nx_pylab.py", line 333, in draw_networkx
    pos = nx.drawing.spring_layout(G)  # default to spring layout
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/venv/lib/python3.9/site-packages/decorator.py", line 214, in fun
    return caller(func, *(extras + args), **kw)
  File "/run/media/luisola/A216C03316C009ED/Users/Luis/Documents/Iniciação Científica/inicia-o-cient-fica/venv/lib/python3.9/site-packages/networkx/utils/decorators.py", line 400, in _random_state
    raise nx.NetworkXError("random_state_index is incorrect") from e
networkx.exception.NetworkXError: random_state_index is incorrect

这是我的代码有错误吗?如果有,我该怎么办?谢谢提前。

5个回答

8

根据这个问题所述:networkx显示随机状态索引不正确。问题出在decorator=5.0.0上。如在相关的GitHub问题(https://github.com/networkx/networkx/issues/4718)中讨论的那样,decorator>=5.0.X将很快可用。因此,请稍等片刻再进行升级,或按照上面的SO问题建议降级到旧版本。

编辑decorator==5.0.5或>=5.0.7可以修复错误

如上所述的问题中,decorator现已更新和修复。


奇怪的是我已经在使用5.0.1了,有可能它还没有被修复吗? - Luís Otávio
事实上,看起来他们遇到了问题,今天发布了5.0.0、5.0.1、5.0.2和5.0.3版本,但都无法正常工作。感谢您的帮助!我会等待并相信它一定会被修复! - Luís Otávio
你使用的是Python2还是Python3?我查看了装饰器项目页面,他们目前没有任何未解决的问题(如果我理解正确的话,上一个问题在5.0.3中得到解决)。 - Sparky05
我正在使用Python3,最近发布的5.0.4版本仍然存在问题。我决定等到他们停止发布新版本,届时应该会修复。现在我将继续使用4.4.2版本。 - Luís Otávio
5.0.5现在应该可用并解决您的问题 - 但不要问我5.0.5相比4.4.2有哪些好处。 - Sparky05
是的,现在它可以工作了,我也没有注意到任何区别,并且在github或Pypy页面上也找不到任何东西。 - Luís Otávio

5

我使用了decorator==5.0.6,并且遇到了相同的错误。不过,升级到5.0.7版本后,问题得到了解决。


注意:2021年7月有同样的问题,我使用“pip install decorator==5.0.7”安装了“decorator==5.0.7”,成功解决了问题,之前我有安装“5.0.6”版本。 - Chidi

2

如果您正在使用MacOS - BigSur,networkx将无法按照您希望的方式工作。我需要去Ubuntu中打开我的项目。


1
是的,我有装饰器5.0.6版本,但我仍然遇到相同的错误! - Mehdi Abbassi
1
你也可以使用Google Colab作为解决方法。 - Pawel Kranzberg

0

这对我有用,降级networkx和decorator后就可以了

networkx                  2.3                      pypi_0    pypi
decorator                 4.3.0                    pypi_0    pypi

OS: Mac OS BigSur


0

由于我正在使用Windows 10,Sparky05提供的建议对我有用,通过使用pip install decorator==5.0.7更新Python中的decorator模块版本。 此外,您还可以更新networkx库的版本。我稍后会分享更新链接,但如果您正在使用Spyder IDE,则无法使用该链接。它将在VSCode中起作用。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接