networkx绘制图形的过时信息

17

我正在尝试使用Python 3.6和Anaconda中的Jupyter笔记本以及network包来绘制一个图形网络x。但是根据文档,图形没有被绘制出来,我只收到了一个不推荐使用的消息。

代码:

import networkx as nx
import csv
import matplotlib as plt

G = nx.read_pajek('Hi-tech.net')

nx.draw(G) 

消息:

MatplotlibDeprecationWarning:pyplot.hold已过时。 未来的行为将与长期默认值一致: 绘图命令将在未清除Axes和/或Figure的情况下添加元素。

b = plt.ishold()

未来的行为将与长期默认行为一致: 绘图命令会在不清除Axes和/或Figure的情况下添加元素。

plt.hold(b)
警告:axes.hold被弃用,将在3.0版本中删除。

1
你解决了吗?我的也出现了同样的问题。 - AngusTheMan
我进入了networkx代码,并在所有带有.hold()的行前面加了一个#。错误信息应该会告诉你哪一行出了问题,但是搜索会找到它们所有的位置。从那以后就没有给我带来任何问题。 - TPike
5个回答

34
为了避免这个警告,我只是简单地替换了

nx.draw(G)
nx.draw_networkx(G)

我的Python版本是3.4,Jupyter版本是'1.0.0',networkx版本是'1.11'。


3
进步了,但我仍然收到“MatplotlibDeprecationWarning: The is_string_like function was deprecated in version 2.1.”的警告。 - Halberdier
不错,这样可以获得在 nx.draw(G) 渲染中缺少的节点标签。 - joshi123

3

我成功地消除了这个信息,方法是进入networkx库并在产生错误的行前面加上#。

我推断.hold()函数不再必要,也不需要被替换。


3
我可以通过添加以下命令行来使nx.draw(G)正常工作:

%matplotlib inline


这对我有用。G = G=nx.from_numpy_matrix(network) %matplotlib inline nx.draw_networkx(G) - user2273202

2

根据错误提示...我在第611行更改了nx_pylab.py文件

#       if cb.is_numlike(alpha):
        if isinstance(alpha,numbers.Number):  

0

我刚刚在Lib\site-packages\matplotlib\cbook的__init__.py文件中注释掉了第365行,该行代码如下:

@deprecated('3.0', 'isinstance(..., numbers.Number)')

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