【问题标题】:How to show node labels when using matplotlib.pyplot?使用 matplotlib.pyplot 时如何显示节点标签?
【发布时间】:2015-04-23 08:49:33
【问题描述】:

我正在使用 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()

【问题讨论】:

标签: python matplotlib graph networkx


【解决方案1】:

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

【讨论】:

  • 太酷了,乔尔!!当我使用您提供的这一行 (plt.savefig('tmp.png')) 将图像保存到文件时,会出现标签。我也在用mac,不知道为什么“plt.show()”不能调出标签。
  • 我试图“接受”或“喜欢”你的回答,但我似乎做不到,因为我没有足够的声誉。我该如何接受你的回答?
  • plt.show() 不起作用的问题与 matplotlib 中的(已知)错误有关。我不确定他们是否已将其修复为较新的版本。顺便说一句 - 您也可以使用适当的扩展名(如 plt.savefig('name.pdf'))保存为 .pdf 或其他几种格式
  • 在您获得更高声誉之前,您无法投票给答案,但在您可以点击接受的向上/向下箭头的大致相同位置应该有一个复选标记。
  • 啊,是的!我找到! :)
【解决方案2】:

尝试使用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,因此无需指定

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多