【复杂网络建模】——Pytmnet进行多层网络分析与可视化

news2024/11/10 18:40:47

目录

一、Pymnet介绍

二、安装步骤

三、多层网络的构建

1、单层网络的构建

2、双层随机网络的构建和可视化

 3、多路复用网络图的可视化

四、总结


一、Pymnet介绍

官网:  

Pymnet是一个用于网络分析和建模的Python库。它提供了各种网络分析工具,例如中心性、聚类和社区检测等指标,以及用于生成和可视化网络的工具。Pymnet是建立在流行的NetworkX库之上的,并为网络分析提供了额外的功能和方便函数。Pymnet可用于各种应用,包括社交网络分析、生物网络分析和交通网络分析。 

主要特点包括:

  • 纯Python实现
  • 可处理一般的多层网络
  • 支持多层网络和多重网络的数据结构
  • 对于稀疏网络具有可扩展性的实现:内存使用量随着边数和节点数呈线性扩展
  • 基于规则的耦合边生成和惰性计算
  • 各种网络分析方法、转换、读取和写入网络、网络模型等
  • 可视化(使用Matplotlib或D3作为后端)
  • 与NetworkX集成,用于单层网络分析

二、安装步骤

Github官网:

将下载的文件解压到conda的site-packages目录下:

 进入目录

cd D:\python\anaconda\Lib\site-packages\Multilayer-networks-library-master

构建和安装

python setup.py build

python setup.py install

 安装成功:

导入成功:

三、多层网络的构建

1、单层网络的构建

通过Pymnet库构建单层网络的过程如下:

创建一个空的单层网络

net = pymnet.MultiplexNetwork()

向网络中添加节点

net.add_node(1) 
net.add_node(2) 
net.add_node(3)

向网络中添加边

net[1,2] = 1 
net[2,3] = 1

这里我们使用 get_multilayer_network_projection() 方法将网络投影到第一个层,得到一个 networkx 图形对象。

可以使用 net 对象的 show() 方法可视化该网络

net.show()

这将显示一个简单的单层网络,其中节点用圆圈表示,边用线条表示。

完整的示例代码如下:

from pymnet import *

# MultilayerNetwork 是库中的基本网络类——所有其他类型的网络都是它的特例。
# 为了获得单体网络对象,可以简单地构造一个具有 0 个方面的多层网络。
net = MultilayerNetwork(aspects=0)

net.add_node(1)
net.add_node(2)

print(list(net))
print(net[1].deg())

2、双层随机网络的构建和可视化

通过er_mutilayer方法来创建:

Generate multilayer Erdos-Renyi network.

The produced multilayer network has a single aspect.

import pymnet

# 构建一个包含两个层,每个层有10个节点的ER网络
net = pymnet.models.er_multilayer(10, 2, p=0.2)

# 输出adjacency_matrix
print("adjacency_matrix: ", net.get_supra_adjacency_matrix())

将上述代码进行可视化

import pymnet

# 构建一个包含两个层,每个层有10个节点的ER网络
net = pymnet.models.ER_multilayer([10, 10], p=0.2)

# 设置节点和层的颜色和形状
node_colors = ["red"] * 10 + ["blue"] * 10
layer_colors = ["lightgray", "lightblue"]
node_shapes = ["o"] * 10 + ["s"] * 10

# 绘制网络
pymnet.draw(net, layerLabelRule=None, nodeLabelRule=None, nodeColorDict=node_colors, 
            layerColorDict=layer_colors, nodeShapeDict=node_shapes)

# 显示绘制结果
pymnet.show()

我写的这个还有点问题待修改。

看一下官网的实例。

# — coding: utf-8 –
from pymnet import *
import matplotlib.pyplot as plt

net = models.er_multilayer(5, 2, 0.2)
fig = draw(net)
fig.savefig("net.pdf")

 3、多路复用网络图的可视化

# — coding: utf-8 –
from pymnet import *
import matplotlib.pyplot as plt

net = models.er_multilayer(5, 2, 0.2)
fig = draw(net)


fig2=draw(er(10,3*[0.4]),layout="spring")
fig2.savefig("net2.pdf")

# — coding: utf-8 –
from pymnet import *

fig3 = draw(er(10, 3 * [0.3]),
           layout="circular",
           layershape="circle",
           nodeColorDict={(0, 0): "r", (1, 0): "r", (0, 1): "r"},
           layerLabelRule={},
           nodeLabelRule={},
           nodeSizeRule={"rule": "degree", "propscale": 0.05})

fig3.savefig("net3.pdf")

我们首先创建了一个三层的空白网络,然后添加了一些层和节点以及它们之间的连接。接下来,我们设置了节点和层的颜色和形状,并使用 pymnet.draw() 函数创建了一个绘图对象。我们使用 lambda 函数将层名称作为标签,并将节点标签设置为 None,这样绘图对象中的节点将不会显示标签。然后,我们使用循环遍历每个节点并设置其形状。最后,我们使用 pymnet.show() 函数显示绘图结果。 

在可视化网络时,可以使用 pymnet.draw() 函数的一些参数来设置节点和层的颜色、形状和标签。例如,我们可以使用 nodeColorDict 参数来设置节点颜色字典,使用 layerColorDict 参数来设置层颜色字典,使用 nodeShapeDict 参数来设置节点形状字典,使用 layerLabelRule 参数来设置层标签规则,使用 nodeLabelRule 参数来设置节点标签规则等等。

PyMNet 中,还提供了许多其他函数和类,可以用于更高级的多层网络分析和操作,例如层与层之间的投影、多层网络的布局和可视化等等。

四、总结:

PyMNet 是一个 Python 库,可以用于多层网络的分析和可视化。它提供了一些方便的函数和类,使用户能够轻松地创建、操作和可视化多层网络。

相关文章:

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

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

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

相关文章

shell的基础学习一

文章目录 一、shell的简介二、 Shell 变量三、Shell 传递参数总结 一、shell的简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供…

百胜中国:未来将实现强劲增长

来源:猛兽财经 作者:猛兽财经 收入分析与未来展望 在过去的三年里,百胜中国(YUMC)的收入一直受到疫情导致的旅行限制和封锁的影响。为了应对疫情造成的业务中断,该公司开始专注于外卖业务,并将…

中通快递财报预测:中通快递2023年收入和利润将大幅下降

来源:猛兽财经 作者:猛兽财经 市场对中通快递2023年的预测 卖方虽然预测中通快递(ZTO)在2023年的表现会很不错,但他们也预计中通快递今年的财务业绩将不会像去年那样好。 根据S&P Capital IQ的数据,卖…

【软考备战·希赛网每日一练】2023年5月1日

文章目录 一、今日成绩二、错题总结第一题第二题 三、知识查缺 题目及解析来源:2023年05月01日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 了解即可。 第二题 解析: 在序列基本有序时,快速排序基准元素起不到分…

第16章 变更管理

文章目录 16.1.2 项目变更的分类 50416.1.3 项目变更产生的原因 50516.2 变更管理的基本原则 50516.3 变更管理角色职责与工作程序 50616.3.1 角色职责 50716.3.2 工作程序 50716.4.1 变更管理操作要点 511 16.1 项目变更的基本概念 504 项目变更是指在信息系统项目的实施过程中…

【蓝桥杯】Python基础:经济基础决定上层建筑!

前言:今年4月第一次参加蓝桥杯比赛,选择的Python 研究生组赛道。在备赛过程中,发现经常会用到一些编程小技巧,因此笔者整理了一些蓝桥杯Python组编程基础常用的内容,以便日后备用。如果有小伙伴也觉得实用,…

1 对数器,二分查找,

文章目录 对数器二分查找**1. 有序序列二分查找****2. 在一个有序数组中&#xff0c;找<某个数最右侧的位置****3. 在一个有序数组中&#xff0c;找>某个数最左侧的位置****4. 无序序列二分查找 &#xff0c;求局部最小值** 对数器 对数器用于在自己的本地平台验证算法正…

百度、谷歌等搜索引擎高效搜索方法 —— 更快速搜索到你想要内容

一、常用搜索方法 1、限定标题 intitle 又被称为去广告搜索法&#xff0c;intitle命令&#xff0c;即in title&#xff08;在标题里&#xff09;返回的的结果是网页的标题包含该关键词。一般情况下搜索的关键词都会在标题里出现&#xff0c;使用intitle命令一般是在特殊需求下…

极乐迪斯科(风格) | Disco Elysium – Style LoRA

目录 What is this ❓How to use / 使用方法 &#x1f4dd;其他信息与参数: 模型演示&#xff08;多图预警&#xff09; 正面tag 负面tag What is this LoRA版本的极乐迪斯科风格模型, 使用共计15张图片, 分辨率为1024*1024, 用Anything v4.5训练. 其他模型没有经过测试,…

Linux之【多线程】生产者与消费者模型BlockQueue(阻塞队列)

生产者与消费者模型 一、了解生产者消费者模型二、生产者与消费者模型的几种关系及特点三、BlockQueue&#xff08;阻塞队列&#xff09;3.1 基础版阻塞队列3.2 基于任务版的阻塞队列3.3 进阶版生产消费模型--生产、消费、保存 四、小结 一、了解生产者消费者模型 举个例子&am…

计算机组成原理第五章(3)DMA处理

三种控制方式&#xff1a;程序查询程序中断DMA方式 回顾一下 之前的中断控制方式&#xff0c;如果是输入命令&#xff0c;先启动命令&#xff0c;通过地址总线选择相应的接口&#xff0c;通过地址译码之后的到选择电路&#xff0c;这个接口准备开始工作。 启动外部设备&#…

网络编程总结一:

一、网络基础&#xff1a; 概念&#xff1a;1> 网络编程的本质就是进程间的通信&#xff0c;只不过进程分布在不同的主机上 2>在跨主机传输过程中&#xff0c;需要确定通信协议后&#xff0c;才可以通信 1. OSI体系结构&#xff08;重点&#xff09; 定义7层模型&…

类和对象(上篇)【C++】

C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事拆分成不同的对象&#xff0c;靠对象之间的交互完成。 目录 一、类的定义 二、访问限定符…

【小样本分割 2020 TPAMI 】PFENet

文章目录 【小样本分割 2020 TPAMI 】PFENet1. 简介1.1 问题1) 高级特征误用造成的泛化损失2) 查询样本和空间样本之间的空间不一致 1.2 方法 2. 网络2.1 整体架构2.2 先验掩膜生成2.3 FEM模块 3. 代码 【小样本分割 2020 TPAMI 】PFENet 论文题目&#xff1a;Prior Guided Fea…

flinkCDC相当于Delta.io中的什么 delta.io之CDF

类似flink CDC databricks 官方文档: How to Simplify CDC With Delta Lakes Change Data Feed - The Databricks Blog delta.io 官方文档: Change data feed — Delta Lake Documentation 概述 更改数据馈送 (CDF) 功能允许 Delta 表跟踪 Delta 表版本之间的行级更改 在…

C语言函数与递归

目录&#x1f60a; 1. 函数是什么&#x1f43e; 2. 库函数&#x1f43e; 3. 自定义函数&#x1f43e; 4. 函数参数&#x1f43e; 5. 函数调用&#x1f43e; 6. 函数的嵌套调用和链式访问&#x1f43e; 7. 函数的声明和定义&#x1f43e; 8. 函数递归&#x1f43e; 1. 函…

二叉搜索树(内含AVL树的旋转操作的详细解释)

二叉搜索树 二叉搜索树的概念二差搜索树结构设计二叉搜索树的操作以及实现遍历判空插入查找删除(☆☆☆)二叉搜索树的其他方法 二叉搜索树的应用二叉搜索树的性能分析二叉树习题练习AVL树AVL树的概念AVL树的结构设计AVL树的插入(非常重要)AVL树的旋转(☆☆☆☆☆)AVL树的插入操…

基于STATCOM的风力发电机稳定性问题仿真分析(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网页三剑客之 HTML

本章开始我们来介绍一下网页前端部分&#xff0c;我们只是简单的介绍一些常用的各种标签&#xff0c;其目的在于为我们后面的项目做准备。 我们并不要求能完全掌握前端的语法&#xff0c;但是在见到以后能够认识这些代码就可以了。 想走后端开发的&#xff0c;前端不需要多么…

【C++】哈希和unordered系列封装

1.哈希 1.1 哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。顺序查找时间复杂度为O(N)&#xff0c;平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N l…