使用matplotlib.pyplot时如何显示节点标签?

How to show node labels when using matplotlib.pyplot?

我正在使用 Python 进行社交网络分析,非常简单,作为新手(SNA 和 Python)。

在我的 mac 上使用终端绘制图形时,我已经尝试了所有可能的方法,但仍然只能绘制节点和边,但没有在它们内部或旁边绘制节点标签。

我应该使用什么脚本来使标签可见?

>>> import networkx as nx
>>> import networkx.generators.small as gs
>>> import matplotlib.pyplot as plt
>>> g = gs.krackhardt_kite_graph()
>>> nx.draw(g)
>>> plt.show()

尝试使用 draw_networkx:

import networkx as nx
import networkx.generators.small as gs
import matplotlib.pyplot as plt
g = gs.krackhardt_kite_graph()
nx.draw_networkx(g)
plt.show()

这导致:

with_labels 默认为 True,因此无需指定

EdChum 给出了很好的答案。另一种默认情况下不显示坐标轴并生成占用更多图形的图形的选项是使用 nx.draw 但给它参数 with_labels = True。 (对于 nx.draw,您需要将 with_labels 设置为 True,但对于 nx.draw_networkx,它默认为 True)。

import networkx as nx
import networkx.generators.small as gs
import matplotlib.pyplot as plt
g = gs.krackhardt_kite_graph()
nx.draw(g,with_labels=True)
plt.savefig('tmp.png')

请注意,存在一个错误,有时 plt.show() 不会显示标签。据我所知,它不在 networkx 中,而是与渲染有关。它保存得很好,所以我不担心详细跟进它。它显示在我的 macbook 上使用 ipython。不确定它在什么其他系统上。更多详情请见 pylab/networkx; no node labels displayed after update