Interactive labels on nodes using python and networkx
我正在尝试使用带有networkx的python创建图,该图具有许多可以交互研究的节点。 我希望能够单击或悬停在节点上方并显示否则未显示的标签。
D3似乎能够做到这一点,并且有一些python实现
mpld3
和
Drew Conway的Networkx前叉
mpld3适用于散点图,但我不知道如何使它完成我想要的图形...
从Drew Conway实现示例代码:
1 2 | import networkx as nx from networkx.readwrite import d3_js |
给
1 2 3 | Traceback (most recent call last): File"<stdin>", line 1, in <module> ImportError: cannot import name d3_js |
如果分叉的networkx包未放在python的系统路径中,这看起来可能是一个错误。...但是,我检查了sys路径的内容并发现networkx ...所以我很困惑。
看起来mpld3可以工作。 您可以通过调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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() |