【问题标题】:Interactive labels on nodes using python and networkx使用 python 和 networkx 的节点上的交互式标签
【发布时间】:2015-11-29 21:06:26
【问题描述】:

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

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

mpld3

Drew Conway's Networkx fork

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

从 Drew Conway 实现 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

这看起来像是一个错误,如果分叉的 networkx 包没有放在 python 的系统路径中,可能会导致....但是,我检查了 sys 路径内容并找到了 networkx...所以我很难过。

【问题讨论】:

  • 您是否将networkx 安装为fork 和标准包? fork 需要先出现在 python 路径中 - 但是>1 版本的包可能需要特别注意(例如,参见 stackoverflow.com/q/6570635

标签: python d3.js networkx mpld3


【解决方案1】:

看起来 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()

【讨论】:

猜你喜欢
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2021-01-22
  • 2019-05-06
  • 2015-04-16
相关资源
最近更新 更多