绘制 networkx 图时出现意外错误

Unexpected error while drawing networkx graph

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

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

nx.draw(grafo)
plt.show()

return grafo

其中矩阵是包含连接权重的邻接表。 coda 工作得很好,但我不得不创建一个新的 python virtualenv,从那时起,即使所有必需的库都已正确安装,它也会在 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

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

正如这个问题所述: 他们是 decorator=5.0.0 的问题。正如在 GitHub (https://github.com/networkx/networkx/issues/4718) 的相关问题中所讨论的那样,decorator>=5.0.X 应该很快可用。因此,请稍等片刻,按照上面 SO 问题中的建议升级或降级到旧版本。

编辑 decorator==5.0.5 or >=5.0.7 修复错误

正如上面链接的问题中所讨论的,装饰器现已更新和修复。

如果您使用的是 MacOS - BigSur,networkx 将无法按您希望的方式工作。我需要在 Ubuntu.

中打开我的项目

我在使用 decorator==5.0.6 时遇到了同样的错误。 但是,升级到 5.0.7 解决了我的问题。

在降级 networkx 和装饰器后,它对我有用

networkx                  2.3                      pypi_0    pypi
decorator                 4.3.0                    pypi_0    pypi

OS: Mac OS BigSur

由于我使用的是 Windows 10,Sparky05 给出的建议对我有用,通过使用 pip install decorator==5.0.7 更新 python 中的装饰器模块的版本。 您还可以更新 networkx 库的版本。稍后我会分享 link 用于更新它,但是如果您使用 Spyder IDE 它将不起作用。它将在 VSCode.

中工作