python - 使用 python 和 networkx 的节点上的交互式标签

标签 python d3.js networkx mpld3

我正在尝试使用 python 和 networkx 制作一个图表,它有许多可以交互式研究的节点。我希望能够单击或悬停在节点上方并显示否则不会显示的标签。

D3似乎能够很好地做到这一点,并且有几个 python 实现

mpld3

Drew Conway's Networkx fork

mpld3 对于散点图工作得很好,但我不知道如何让它做我想要的图表......

实现 example code 来自德鲁·康威:

import networkx as nx  
from networkx.readwrite import d3_js

给出

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name d3_js

这看起来像是一个错误,如果 fork 的networkx包没有放置在python的系统路径中,可能会导致这个错误......但是,我检查了sys路径内容并发现了networkx......所以我被难住了。

最佳答案

看起来 mpld3 可以工作。您可以通过调用 draw_networkx_nodes() 来获取散点数据,它只是 scatter() 的包装。

import matplotlib.pyplot as plt
import numpy as np
import mpld3

import networkx as nx
G = nx.path_graph(4)
pos = nx.spring_layout(G)

fig, ax = plt.subplots(subplot_kw=dict(axisbg='#EEEEEE'))
scatter = nx.draw_networkx_nodes(G, pos, ax=ax)
nx.draw_networkx_edges(G, pos, ax=ax)

labels = G.nodes()
tooltip = mpld3.plugins.PointLabelTooltip(scatter, labels=labels)
mpld3.plugins.connect(fig, tooltip)

mpld3.show()

关于python - 使用 python 和 networkx 的节点上的交互式标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33988130/

相关文章:

python - 无法更改Python中全局变量的值

python - 在 Python 中加载 CouchDB 设计文档的推荐方法?

javascript - 拖动行为不起作用?

javascript - 增加网络/图表中节点之间的距离

python - NetworkX - 保持边缘秩序

python - 从 Pandas 数据帧创建边缘列表

python - 如何并行并发 HTTP 请求

python - 有没有一种 pythonic 方法来支持 Python 中的 memoize 装饰器的关键字参数?

javascript - 拖动 SVG 元素时的 d3.js 占位符图形

python - NetworkX - 生成随机连接的二分图