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

b2af0f712ae66b991310f805a5da3ac9.jpeg

更多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下载

03f3f0ffa2ee3e1e419556c9ebff2fdf.jpeg

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为设备使用python实现文件自动保存下载

实验目的: 公司有一台CE12800的设备,管理地址为172.16.1.2,现在需要编写自动化脚本,STELNET实现设备的自动保存配置文件,使用SFTP实现设备的文件下载。 实验拓扑: 实验步骤: 步骤1&#xff1…

深入Rust的模式匹配与枚举类型

今天,我们将深入探讨Rust语言中的两个强大特性:模式匹配(Pattern Matching)和枚举类型(Enums)。这两个特性是Rust提供的核心工具之一,它们在处理多种类型的数据和复杂的逻辑控制中发挥着关键作用…

手把手教你如何实现List——ArrayList

目录 前言: 线性表 顺序表 接口的实现 一. 打印顺序表 二.新增元素,默认在数组最后新增 三.在 pos 位置新增元素 四.判定是否包含某个元素 五. 查找某个元素对应的位置 六.获取 pos 位置的元素 七.给 pos 位置的元素设为 value 八.删除第一次出现的关键字k…

Python中如何用栈实现队列

目录 一、引言 二、使用两个栈实现队列 三、性能分析 四、应用场景 五、代码示例 六、优缺点总结 一、引言 队列(Queue)和栈(Stack)是计算机科学中常用的数据结构。队列是一种特殊的线性表,只允许在表的前端进行…

HTTPS的介绍以及工作过程

目录 一.HTTPS是什么? HTTPS的介绍 HTTPS产生的背景 二.https的安全机制 加密是什么 如何加密 客户端如何获取公钥 总结 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 🎥 本文由 tq02 原创&#xff0…

OkHttp的配置

一、拦截器 1.添加拦截器的作用: 每次在请求过程中就会回调一次intercept方法 2.拦截器的回调方法里我们可以做那些事情: 当前的请求还没有发给服务器,比如我们在与服务器通信的时候,一个应用中很多地方都会跟服务器发起通信。…

Linux端口流量统计

Ubuntu sudo apt-get install wiresharkCentOS sudo yum install wiresharkUDP端口统计 sudo tshark -i <interface> -f "udp port <port_number>" -a duration:60 -q -z conv,udp请将 替换为你的网络接口&#xff0c;<port_number> 替换为要监…

ASP.NET Core 使用 SignalR 实现实时通讯

&#x1f433;简介 SignalR是一个用于ASP.NET的库&#xff0c;它允许服务器代码向连接的客户端实时发送推送通知。它使用WebSockets作为底层传输机制&#xff0c;但如果浏览器不支持WebSockets&#xff0c;它会自动回退到其他兼容的技术&#xff0c;如服务器发送事件&#xff…

Linux常用命令----shutdown命令

文章目录 命令概述参数解释使用示例及解释 命令概述 shutdown 命令用于安全地关闭或重启 Linux 系统。它允许管理员指定一个时间点执行操作&#xff0c;并可发送警告信息给所有登录的用户。 参数解释 时间参数 ([时间]): now: 立即执行关闭或重启操作。m: 在 m 分钟后执行操作…

centos7.9 + gitlab12.3.0安装

本文在centos7.9操作系统上安装gitlab 12.3.0&#xff0c;gitlab官方最新的版本已经是16.6.0了&#xff0c;这里仍然安装12.3.0版本的原因是汉化包的最新版本是12.3.0&#xff0c;如果汉化包的版本和gitlab的版本不对应&#xff0c;会出现汉化他无法启动的现象。 1、安装依赖 …

Web UI自动化测试框架

WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方法&#xff0c;断言…

07-学成在线修改/查询课程的基本信息和营销信息

修改/查询单个课程信息 界面原型 第一步: 用户进入课程列表查询页面,点击编辑按钮编辑课程的相关信息 第二步: 进入编辑界面显示出当前编辑课程的信息,其中课程营销信息不是必填项,修改成功后会自动进入课程计划编辑页面 查询课程信息 请求/响应数据模型 使用Http Client测…

89基于matlab的人工蜂群和粒子群混合优化的路径规划算法

基于matlab的人工蜂群和粒子群混合优化的路径规划算法&#xff0c;起点和终点确定的前提下&#xff0c;在障碍物中寻找最佳路径。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 89人工蜂群和粒子群混合优化 (xiaohongshu.com)https://www.xiaohongshu.com/e…

【Vue】绝了!这生命周期流程真...

hello&#xff0c;我是小索奇&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;如果对您有用&#xff0c;可以点赞收藏哈~ 生命周期 Vue.js 组件生命周期&#xff1a; 生命周期函数&#xff08;钩子&#xff09;就是给我们提供了一些特定的…

Android flutter项目 启动优化实战(二)利用 App Startup 优化项目和使用flutterboost中的问题解决

背景 书接上回&#xff1a; Android flutter项目 启动优化实战&#xff08;一&#xff09;使用benchmark分析项目 已经分析出了问题: 1.缩短总时长&#xff08;解决黑屏问题、懒启动、优化流程&#xff09;、2.优化启动项&#xff08;使用App Startup&#xff09;、3.提升用…

java基础-IO

1、基础概念 1.1、文件(File) 文件的读写可以说是开发中必不可少的部分&#xff0c;因为系统会存在大量处理设备上的数据&#xff0c;这里的设备指硬盘&#xff0c;内存&#xff0c;键盘录入&#xff0c;网络传输等。当然这里需要考虑的问题不仅仅是实现&#xff0c;还包括同步…

【问题系列】消费者与MQ连接断开问题解决方案(一)

1. 问题描述 当使用RabbitMQ作为中间件&#xff0c;而消费者为服务时&#xff0c;可能会出现以下情况&#xff1a;在长时间没有消息传递后&#xff0c;消费者与RabbitMQ之间出现连接断开&#xff0c;导致无法处理新消息。解决这一问题的方法是重启Python消费者服务&#xff0c;…

redis运维(二十二)redis 的扩展应用 lua(四)

一 最佳实践 ① 铺垫 最佳实践&#xff1a;1、把redis操作所需的key通过KEYS进行参数传递2、其它的lua脚本所需的参数通过ARGV进行传递. redis lua脚本原理 Redis Lua脚本的执行原理 ② 删除指定的脚本缓存 ③ redis集群模式下使用lua脚本注意事项 1、常见报错现象 C…

草图大师sketchup道路怎么快速种树?

草图大师sketchup道路怎么快速种树&#xff1f;草图大师中的道路图纸想要在道路两旁种树&#xff0c;该怎么快速给道路种树呢&#xff1f;下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下 草图大师sketchup中想要快速种树&#xff0c;该怎么种多棵树呢&#xff1…

别太担心,人类只是把一小部分理性和感性放到了AI里

尽管人工智能&#xff08;AI&#xff09;在许多方面已经取得了重大进展&#xff0c;但它仍然无法完全复制人类的理性和感性。AI目前主要侧重于处理逻辑和分析任务&#xff0c;而人类则具有更复杂的思维能力和情感经验。 人类已经成功地将一些可以数据化和程序化的理性和感性特征…