目录
1. Pyvis 介绍
Pyvis 是一个 Python 库,用于创建和可视化网络图。它基于 Vis.js 库,可以生成交互式的 HTML 文件,让用户在网页上直观地查看和操作网络图。以下是 Pyvis 的主要功能和特点:
1. 创建和可视化网络图:
Pyvis 允许用户创建节点和边,并将其可视化。网络图可以是有向图或无向图。
2. 集成 NetworkX:
Pyvis 与 NetworkX 集成,可以直接从 NetworkX 图对象生成 Pyvis 图对象,方便用户将已有的 NetworkX 图转换为交互式的可视化图。
3. 交互式功能:
生成的图形是交互式的,用户可以拖动节点、缩放图形、查看节点和边的详细信息(如权重、标签等)。
4. 定制化选项:
Pyvis 提供多种配置选项,允许用户定制图形的外观和行为。例如,可以设置节点和边的颜色、形状、大小、标签、物理引擎等。
5. HTML 输出:
生成的网络图可以保存为 HTML 文件,便于分享和展示。用户只需在浏览器中打开 HTML 文件即可查看图形。
6. 快速原型和调试:
Pyvis 提供的简单 API 和直观的配置选项,使其适合快速原型设计和调试网络图。
Pyvis 是一个非常适合用来展示和分析复杂网络结构的工具,特别是在需要交互式可视化的场景下,如社交网络分析、网络拓扑研究等。
2. 关系网络可视化
import random
import string
import networkx as nx
from pyvis.network import Network
# 创建有向图
G = nx.DiGraph()
# 添加节点和边
node_list = ["".join(random.choices(string.ascii_letters, k=5)) for _ in range(20)]
for _ in range(100):
start = random.choices(node_list)[0]
end = random.choices(node_list)[0]
w = random.choices(range(5), weights=[100, 1, 1, 1, 1])[0]
G.add_edge(start, end, weight=w)
# 创建 Pyvis 网络
net = Network(height='750px',
width='100%',
bgcolor="#222222",
font_color="white",
select_menu=True,
filter_menu=True,
notebook=True)
# 将 NetworkX 图形添加到 Pyvis 网络
net.from_nx(G)
# 配置边的外观
for edge in net.edges:
edge['title'] = f"Weight: {edge['width']}"
edge['value'] = edge['width']
# net.toggle_physics(True)
# 显示图形
net.show("graph.html")
这段代码首先创建了一个有向图,并随机生成了20个节点,每个节点由5个随机字母组成。接着,随机在这些节点之间添加了100条边,每条边都有一个权重,其中权重为0的概率最大,其他权重(1到4)的概率较小。然后,代码使用Pyvis库来可视化这个图,将NetworkX创建的有向图转换为Pyvis的网络对象。为每条边设置了标题和值,标题显示边的权重,值用于控制边的可视化效果。最后,代码生成一个名为"graph.html"的HTML文件,用于展示图形。
关系筛选