2015-11-29 64 views
1

我正在嘗試使用python與networkx進行交互式調查。我希望能夠點擊或懸停在節點上方並顯示一個否則不顯示的標籤。使用python和networkx的節點上的交互標籤

D3似乎能夠做到這一點很好,有一對夫婦Python實現

mpld3

Drew Conway's Networkx fork

mpld3的散點圖工作得很好,但我不知道知道如何讓它做我想要的圖...

i從德魯康威mplementing 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的系統路徑可能導致錯誤....但是,我查系統路徑的內容和找到networkx ...所以我很難過。

+0

您是否已將'networkx'安裝爲fork和標準包? fork需要先在python路徑中出現 - 但是> 1個版本的包可能需要特別注意(請參閱http://stackoverflow.com/q/6570635) – Bonlenfum

回答

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() 
+0

[適用於我](http:// nbviewer .ipython.org /要旨/ aflaxman/612ba0293714f2e5f3f9)。非常酷。現在,如果它的頂部有d3js [force layout](https://github.com/mbostock/d3/wiki/Force-Layout),那真是太棒了! –

+0

This Works!謝謝您的幫助!! – user1278616

相關問題