我确信您在使用名为 Networkx 的特殊库之前已经在 python 中构建了网络图。您是否想过是否有一种与图表交互的方法?你猜怎么了?!有一个名为 Pyvis 的库,它有助于提高 Python 编程语言中网络图的交互性。
Pyvis 库支持可视化并为网络图添加交互性。该库构建在强大且成熟的 VisJS JavaScript 库之上。这允许快速响应的交互,并以低级 JavaScript 和 HTML 的形式提取网络图。
安装 Pyvis 库简单明了,可以使用以下命令在系统命令提示符下使用 pip 命令来完成。
代码实现
现在让我们继续使用 Python 编程语言中的 Pyvis 库来实现交互式网络图的代码。我们将首先使用下面的代码片段导入所有必要的库/模块。
1
2
3
|
from pyvis import network as net from IPython.core.display import display, HTML import random |
我们将首先创建一个仅包含节点且节点之间没有边的网络图。可以使用 Network 函数来创建空图,该函数指定其中网络图的属性,包括背景颜色、标题、高度和宽度。
接下来,我们将使用该add_node
函数向网络图中添加节点。我们将添加 10 个节点(从 1 到 10),然后将网络图转换为 HTML 格式以添加交互性并保存 HTML 文件。
1
2
3
4
5
6
7
8
9
|
g_only_nodes = net.Network(height = '600px' ,width = '90%' , bgcolor = 'white' ,font_color = "red" , heading = "Networkx Graph with only Nodes" ) for i in range ( 1 , 11 ): g_only_nodes.add_node(i) g_only_nodes.show( 'Only_Nodes.html' ) display(HTML( 'Only_Nodes.html' )) |
看看只有节点的网络图是什么样子的。
创建网络图的下一步是在节点之间添加边。我们将在随机节点之间添加随机边。看看下面相同的函数。
1
2
3
4
|
def generate_edge(): s = random.randint( 1 , 10 ) d = random.randint( 1 , 10 ) return (s,d) |
在该函数中,我们将使用该random.randint
函数生成随机源节点和目标节点对。我们将获得 1 到 10 之间的随机节点。为了确保我们有足够的边;我们将生成 20 条随机边。为了确保相同的边不会一次又一次重复,我们将保留(源,目标)节点对的记录。看看下面的代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 号
18
|
g = net.Network(height = '600px' ,width = '90%' , bgcolor = 'white' ,font_color = "red" , heading = "A Simple Networkx Graph" ) for i in range ( 1 , 11 ): g.add_node(i) i = 0 chosen_set = [] while (i! = 20 ): eg = generate_edge() if (eg[ 0 ]! = eg[ 1 ] and not (eg in chosen_set)): chosen_set.append(eg) g.add_edge(eg[ 0 ],eg[ 1 ]) i + = 1 g.show( 'Simple_Network_Graph.html' ) display(HTML( 'Simple_Network_Graph.html' )) |
添加边后,我们将得到一个如下所示的网络图。看看网络图是多么令人惊奇,以及图表的交互性如何!
结论
Pyvis 是一个功能强大的 python 模块,用于使用 Python 编程语言可视化和交互式操作网络图。我希望您能够使用该库构建网络图并享受与图的交互。
感谢您的阅读!
快乐编码!😃
另请阅读:Python 网络分析 – 完整指南