gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:11 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0