Python Pyvis库:可视化复杂网络结构的利器

news2024/11/16 3:32:56

更多Python学习内容:ipengtao.com

大家好,我是涛哥,今天为大家分享 Python Pyvis库:可视化复杂网络结构的利器,全文4000字,阅读大约12钟。

在数据科学和网络分析领域,理解和可视化复杂网络结构是解决许多问题的关键。Python中的pyvis库提供了一种直观而强大的工具,使得网络结构的可视化变得轻松而灵活。本文将深入介绍pyvis库的基本用法、高级特性以及一些实际案例。

安装与基本用法

首先,需要通过以下命令安装pyvis库:

pip install pyvis

接着,学习如何使用pyvis创建和可视化一个简单的网络图:

from pyvis.network import Network

# 创建一个简单的网络图
net = Network()

# 添加节点
net.add_node(1, label="Node 1")
net.add_node(2, label="Node 2")
net.add_node(3, label="Node 3")

# 添加边
net.add_edge(1, 2)
net.add_edge(2, 3)

# 可视化
net.show("simple_network.html")

通过这个例子,可以了解如何添加节点和边,并生成一个HTML文件进行可视化。这只是pyvis功能的冰山一角。

节点与边的自定义

pyvis通过多种方式自定义节点和边,例如调整颜色、大小、形状等。

以下是一个示例:

from pyvis.network import Network

# 创建一个网络图
net = Network()

# 添加节点
net.add_node(1, label="Node 1", color="red", size=30, shape="box")
net.add_node(2, label="Node 2", color="blue", size=20, shape="ellipse")
net.add_node(3, label="Node 3", color="green", size=25, shape="diamond")

# 添加边
net.add_edge(1, 2, color="gray", width=2)
net.add_edge(2, 3, color="black", width=1)

# 可视化
net.show("customized_network.html")

支持复杂网络

pyvis不仅支持简单的无向图,还可以轻松处理复杂网络,包括有向图、加权图等。

以下是一个有向图的示例:

from pyvis.network import Network

# 创建一个有向图
net = Network(directed=True)

# 添加节点
net.add_node(1, label="Node 1")
net.add_node(2, label="Node 2")
net.add_node(3, label="Node 3")

# 添加有向边
net.add_edge(1, 2, label="Directed Edge")
net.add_edge(2, 3, label="Directed Edge")

# 可视化
net.show("directed_network.html")

图的布局与交互性

pyvis提供了多种图的布局算法,可以以不同的方式呈现网络结构。同时,生成的图支持交互式操作,例如放大、缩小、拖动等。

以下是一个示例:

from pyvis.network import Network

# 创建一个网络图
net = Network()

# 添加节点和边
net.add_node(1, label="Node 1")
net.add_node(2, label="Node 2")
net.add_node(3, label="Node 3")
net.add_edge(1, 2)
net.add_edge(2, 3)

# 设置图的布局算法
net.barnes_hut()

# 可视化
net.show("interactive_network.html")

实际应用案例

pyvis的强大之处在于它可以应用于多种场景,包括社交网络分析、生物信息学、交通网络等。探讨一个简单的社交网络可视化案例:

from pyvis.network import Network

# 创建一个社交网络图
net = Network(height="750px", width="100%", notebook=True)

# 添加节点和边
net.add_node("Alice", label="Alice", size=30)
net.add_node("Bob", label="Bob", size=25)
net.add_node("Charlie", label="Charlie", size=20)
net.add_edge("Alice", "Bob", label="Friends")
net.add_edge("Bob", "Charlie", label="Friends")

# 可视化
net.show("social_network.html")

进阶特性与定制

除了基本用法外,pyvis还提供了许多进阶特性和定制选项,使得用户能够更灵活地控制图的外观和行为。

1. 边的箭头与标签

pyvis允许在有向图中添加箭头和边标签,进一步强化图的表达能力:

from pyvis.network import Network

# 创建一个有向图
net = Network(directed=True)

# 添加节点和边
net.add_node(1, label="Node 1")
net.add_node(2, label="Node 2")
net.add_node(3, label="Node 3")
net.add_edge(1, 2, label="Directed Edge", arrows="to")
net.add_edge(2, 3, label="Directed Edge", arrows="to")

# 可视化
net.show("arrow_label_network.html")

2. 自定义图的样式

用户可以通过设置图的样式,调整节点、边的颜色、大小等属性,以满足特定的可视化需求:

from pyvis.network import Network

# 创建一个网络图
net = Network()

# 添加节点和边
net.add_node(1, label="Node 1", color="red", size=30)
net.add_node(2, label="Node 2", color="blue", size=20)
net.add_edge(1, 2, color="gray", width=2)

# 设置节点样式
net.set_node_style(1, color="green", size=25)

# 设置边样式
net.set_edge_style(1, color="black", width=1)

# 可视化
net.show("custom_style_network.html")

3. 事件处理与交互性

pyvis支持在图上注册事件处理函数,使得用户能够通过交互触发特定操作。

以下是一个简单的示例:

from pyvis.network import Network

# 创建一个网络图
net = Network()

# 添加节点和边
net.add_node(1, label="Node 1", title="Click me!")
net.add_node(2, label="Node 2", title="Or me!")

net.add_edge(1, 2, label="Edge")

# 注册事件处理函数
def handle_click(node_id, node_label, mouse_x, mouse_y):
    print(f"Clicked on node {node_id} with label {node_label} at position ({mouse_x}, {mouse_y})")

net.on_click(handle_click)

# 可视化
net.show("interactive_events_network.html")

总结

在本文中,全面探讨了pyvis库的强大功能,从基础用法到高级特性,再到实际应用案例。pyvis以其直观而灵活的网络可视化工具,为用户提供了创建、定制和交互网络图的便捷途径。通过学习本文,可以了解如何快速构建各类网络图,无论是简单的无向图还是复杂的有向图。

深入讨论了节点与边的添加、图的布局调整、样式定制等基础知识,并展示了如何通过pyvis创建美观而富有信息的网络图。随后,探讨了一系列高级特性,包括箭头与标签的应用、自定义图的样式和事件处理与交互性的实现,使读者能够更灵活地运用pyvis满足不同场景下的可视化需求。

最后,通过实际应用案例,展示了pyvis在真实数据科学和网络分析项目中的威力。无论是展示复杂关系、进行交互式数据探索还是创建引人注目的可视化报告,pyvis都为用户提供了丰富的工具集。

总体而言,pyvis作为一个强大的Python网络可视化库,为用户提供了直观、灵活、且高度定制化的网络图可视化方案。通过深入了解和灵活运用pyvis,可以为自己的数据科学和可视化工作注入新的活力。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

点击“阅读原文”,获取更多学习内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1272885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JeecgBoot低代码开发—Vue3版前端入门教程

JeecgBoot低代码开发—Vue3版前端入门教程 后端接口配置VUE3 必备知识1.vue3新特性a. https://v3.cn.vuejs.org/b.setup的用法c.ref 和 reactive 的用法d.新版 v-model 的用法e.script setup的用法 2.TypeScript基础 后端接口配置 如何修改后台项目路径 http://127.168.3.52:8…

Ubuntu systemd-analyze命令(系统启动性能分析工具:分析系统启动时间,找出可能导致启动缓慢的原因)

文章目录 Ubuntu systemd-analyze命令剖析目录简介systemd与systemd-analyze工作原理 安装和使用命令参数详解用例与示例显示启动时间(systemd-analyze time)列出启动过程中各个服务的启动时间(systemd-analyze blame)显示系统启动…

R语言单因素方差分析+差异显著字母法标注+逐行详细解释

R语言单因素方差分析 代码如下 df <- read.csv("data.csv",header TRUE,row.names 1) library(reshape2) df <- melt(df,idc()) names(df) <- c(trt, val) df aov1 <- aov(val~trt,datadf) summary(aov1)library(agricolae) data <- LSD.test(aov…

windows远程桌面登录,提示:“出现身份验证错误,要求的函数不受支持”

问题&#xff1a; windows登录远程桌面&#xff0c;提示&#xff1a;“出现身份验证错误&#xff0c;要求的函数不受支持”&#xff0c;如下图&#xff1a; 问题原因&#xff1a; windows系统更新&#xff0c;微软系统补丁的更新将 CredSSP 身份验证协议的默认设置进行了调…

【腾讯云云上实验室-向量数据库】个人对腾讯云向量数据库的体验心得

目录 前言Tencent Cloud VectorDB概念使用初体验腾讯云向量数据库的优势应用场景有哪些&#xff1f;未来展望番外篇&#xff1a;腾讯云向量数据库的设计核心结语 前言 还是那句话&#xff0c;不用多说想必大家都能猜到&#xff0c;现在技术圈最火的是什么&#xff1f;非人工智…

ZZULIOJ 2466: 楼上瞎说,楼下才是,Java

2466: 楼上瞎说&#xff0c;楼下才是 题目描述 《九章算术》的内容十分丰富&#xff0c;全书采用问题集的形式&#xff0c;收有246个与生产、生活实践有联系的应用问题&#xff0c;其中每道题有问&#xff08;题目&#xff09;、答&#xff08;答案&#xff09;、术&#xff…

【Vulnhub 靶场】【DriftingBlues: 9 (final)】【简单】【20210509】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/driftingblues-9-final,695/ 靶场下载&#xff1a;https://download.vulnhub.com/driftingblues/driftingblues9.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年05月09日 文件大小&#xff1a;738 …

编程之外,生活的美好航程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

涵盖多种功能,龙讯旷腾Module第二期:电子结构及声子计算

Module是什么 在PWmat的基础功能上&#xff0c;我们针对用户的使用需求开发了一些顶层模块&#xff08;Module&#xff09;。这些Module中的一部分是与已有的优秀工具的接口&#xff0c;一部分是以PWmat的计算结果为基础得到实际需要的物理量&#xff0c;一部分则是为特定的计…

Jmeter接口测试:jmeter_HTTP Cookie管理器看这一篇文章就够了

HTTP Cookie管理器 HTTP Cookie管理器可以像浏览器一样自动存储和发送cookie&#xff0c;以这种自 动收集的方式收集到的cookie不会在cookie manager中进行展示&#xff0c;但是运行后&#xff0c; 可以通过 查看结果树&#xff08;监听器&#xff09;可以查看到cookie信息 除…

WPF实战项目十九(客户端):修改RestSharp的引用

修改HttpRestClient&#xff0c;更新RestSharp到110.2.0&#xff0c;因为106版本和110版本的代码不一样&#xff0c;所以需要修改下代码 using Newtonsoft.Json; using RestSharp; using System; using System.Threading.Tasks; using WPFProjectShared;namespace WPFProject.S…

中国毫米波雷达产业分析4——毫米波雷达企业介绍

一、矽典微 &#xff08;一&#xff09;公司简介 矽典微致力于实现射频技术的智能化&#xff0c;专注于研发高性能无线技术相关芯片&#xff0c;产品广泛适用于毫米波传感器、下一代移动通信、卫星通信等无线领域。 整合自身在芯片、系统、软件、算法等领域的专业能力&#xf…

【驱动】SPI驱动分析(四)-关键API解析

关键API 设备树 设备树解析 我们以Firefly 的SPI demo 分析下dts中对spi的描述&#xff1a; /* Firefly SPI demo */ &spi1 {spi_demo: spi-demo00{status "okay";compatible "firefly,rk3399-spi";reg <0x00>;spi-max-frequency <48…

哈希思想的应用:位图、布隆过滤器及哈希切割

一.位图引入 给40定亿个不重复的无符号整数存储在文件中&#xff0c;如何判断一个数在不在其中&#xff1f; 分析&#xff1a;最容易想到的思路是将这些数字存储到某个能够实现快速查找的容器中&#xff0c;如红黑树或哈希表。 但是&#xff0c;10亿个字节大约占1G内存&#x…

使用JDBC操作数据库时,插入数据中文乱码

如图&#xff1a; 解决办法&#xff1a; 修改连接数据库的路径&#xff0c;即url 如下&#xff1a; 设置编码格式为utf-8 urljdbc:mysql://localhost:3306/qfedu?useUnicodetrue&characterEncodingUTF-8再次运行&#xff0c;插入数据即可

python pytorch实现RNN,LSTM,GRU,文本情感分类

python pytorch实现RNN,LSTM&#xff0c;GRU&#xff0c;文本情感分类 数据集格式&#xff1a; 有需要的可以联系我 实现步骤就是&#xff1a; 1.先对句子进行分词并构建词表 2.生成word2id 3.构建模型 4.训练模型 5.测试模型 代码如下&#xff1a; import pandas as pd im…

Linux多线程同步

Linux多线程同步 1、线程同步的概念1.1 为什么要同步1.2 同步方式 2、互斥锁2.1 互斥锁函数2.2 互斥锁使用 3、死锁4、读写锁4.1 读写锁函数4.2 读写锁使用 5、条件变量5.1 条件变量函数5.2 生产者和消费者 6、信号量6.1 信号量函数6.2 生产者和消费者6.3 信号量的使用6.3.1 总…

Android系统源码中添加可编译运行执行程序,java

文章目录 Android系统源码中添加可编译运行执行程序&#xff0c;java1.Android设备中执行编译运行java代码2.编译执行jar包 Android系统源码中添加可编译运行执行程序&#xff0c;java 1.Android设备中执行编译运行java代码 新建一个文件夹&#xff0c;以及Java类的包路径 测…

AI 编程如何助力开发者高效完成架构设计工作?

▼最近直播超级多&#xff0c;预约保你有收获 今晚直播&#xff1a;《AI 编程技术架构剖析和案例开发实战》 —1— AI 编程能帮我们完成哪些工作&#xff1f; 从目前企业级种种现实场景应用来看&#xff0c;AI 编程已经成为一种帮助开发者解决架构设计复杂问题、提高编程效率以…

C/C++转义符:\x

文章目录 什么是转义符使用"\x"定义char数组宏定义中的\ 什么是转义符 在C语言中&#xff0c;转义符用于将一些特殊字符表示为单个字符&#xff0c;常用的转义符有&#xff1a; \\&#xff1a;反斜杠符号\&#xff1a;单引号\"&#xff1a;双引号\a&#xff1…