7

我是 NetworkX 的新手。现在,我设法将所有节点连接到这个特定节点。我接下来要做的是使其具有交互性,例如能够通过使用光标拖动来使每个节点移动。我知道我必须使用 matplotlib,但我不知道如何使用它。谁能帮我?

在此处输入图像描述

我的代码是:

import matplotlib.pyplot as plt
import networkx as nx
import itertools

d = [name of nodes]
f = [number per nodes]

for i in d:
  G.add_edge('"' + i + '"',b)

pos=nx.fruchterman_reingold_layout(G, k=0.5, iterations=5)

nx.draw_networkx_nodes(G,pos,node_size=130, node_color="white")

nx.draw_networkx_edges(G,pos, width=0.2,alpha=1,edge_color='black')

nx.draw_networkx_labels(G,pos,font_size=7,font_family='sans-serif')

for i,j in itertools.izip(d,f):
    nx.draw_networkx_edge_labels(G,pos, {('"' + i + '"',b):j}, font_size=7, label_pos= 0.80)

plt.axis('off')
plt.show()
4

2 回答 2

6

matplotlib 似乎很难做到(它并不是真的为此设计的)。Networkx 绘图模块很差,它主要使用节点的自定义散点图等。

我建议另一种解决方案:

  • 将您的图形导出为 JSON 或 GEXF,并使用 Javascript 图形绘图库使您的图形具有交互性,例如:SigmaJsVivaGraphJs

您可以在我的博客的网页上找到使用 NetworkX 创建的真实图表示例。在此示例中节点是静态的,但单击节点会突出显示其邻居。

提议的交互式图形绘图库的官方示例:

于 2015-07-24T09:43:07.187 回答
4

Matplotlib 更多地是为静态图形和图表设计的。

然而,一旦 NetworkX 图形被导出为 GEXF 格式,就会有一个工具允许您根据位置或标准选择区域以便移动它。该工具称为Gephi。您可以开始使用布局,也可以根据数据科学家的喜好深入研究。

于 2015-07-27T00:11:14.180 回答