繁体   English   中英

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

[英]Interactive labels on nodes using python and networkx

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

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

pld3

Drew Conway 的 Networkx 分叉

mpld3 适用于散点图,但我不知道如何让它做我想要的图形......

从 Drew Conway 实现示例代码

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

这看起来像是一个错误,如果分叉的 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM