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

时间:2015-11-29 21:06:27

标签: python d3.js networkx mpld3

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

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

1 个答案:

答案 0 :(得分:2)

看起来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() 的包装。

#!/bin/bash
read -p "enter a sentence: "
sentence="$(echo $REPLY | tr '[A-Z]' '[a-z]' | tr -dc [:alpha:])"
for (( i=0; i<${#sentence}; i++ ));
  do echo -n "$(($(printf "%d " "'${sentence:$i:1}") - 96 )) "
done
echo