复杂网络的可视化分析基础教程详细版(一)

复杂网络分析_NetworkX 本文包括NetworkX库的示例应用,具体有网络可视化,网络中心性、路径与网络脆弱性分析和网络聚类分析。 阅读详情

本篇博客讲的是python中复杂网络分析工具network的关于网络中的

  1. 节点和边
  2. 节点的度
  3. 聚集系数
  4. 最短距离

author:xiao黄 缓慢而坚定的生长


首先导入一些相关的包:

import networkx as nx
import numpy as np # 数值计算
import scipy as sp # 科学计算
import matplotlib.pyplot as plt # 绘图

下面先以美国空手道俱乐部的例子进行讲解:
空手道俱乐部网络是复杂网络分析中常用的一个例子网络,在分析节点中心性和社团结构等问题时都会被使用。因此networkx中也自带空手道俱乐部网。

g = nx.karate_club_graph() # 美国空手道俱乐部
nx.draw(g) 
plt.show()

图像显示如下:
在这里插入图片描述可以对上述的网络进行参数修改等操作,代码如下:

# 可选布局
fig,ax = plt.subplots(figsize=(8,6))
layout = [nx.shell_layout,
          nx.circular_layout,
          nx.fruchterman_reingold_layout,
          nx.circular_layout,
          nx.kamada_kawai_layout,
          nx.spring_layout]
pos = layout[5](g) # 根据布局方式生成每个节点的位置坐标
NodeId = list(g.nodes())
node_size = [g.degree(i)**1.2*90 for i in NodeId]
options = {
           'node_size': node_size,
           'line_color': 'grey',
           'linewidths': 0.1,
           'width': 0.4,
           'node_color': node_size,
           'font_color': 'w' # 字体颜色
           }
nx.draw(g, pos=pos, ax=ax, with_labels=True, **options)
plt.show()

新的显示图像如下:
在这里插入图片描述


节点和边

# 节点的数量
N = g.number_of_nodes()   # len(g.nodes())
# 网络中边的数量
L = g.number_of_edges()   # len(g.edges())

节点的度

计算网络中所有节点的度,并绘制其度的统计图

# 节点的度
G.degree() # 返回所有节点的度
G.degree(1) # 返回特定节点的度

度分布图的代码如下:

# 度分布图
degs = dict(nx.degree(g))
print('degree of each node:', degs)
print('average degree:', np.mean(list(degs.values())))
# 度分布统计分布图
plt.hist(degs.values(), bins=range(N))
plt.xlabel('degree', fontsize=14)
plt.ylabel('frequency', fontsize=14)
plt.title('degree distribution', fontsize=14)

显示的结果如下:
在这里插入图片描述

最短距离

节点间的最短距离dij表示从节点i最少走多少距离可以到节点j。
下面是一些基本的函数

# 返回特定节点间的最短距离
# nx.shortest_path_length(G,source=1,target=2)
# 返回特定节点与其他所有节点的最短距离
# nx.shortest_path_length(G,source=1)
# 返回所有节点间的最短距离
# nx.shortest_path_length(G)
# 两个节点间的最短距离
d12 = nx.shortest_path_length(G,source=2,target=19)
print('SPL between 2 and 9:',d12)

# 节点间的平均最短距离
avg_d = nx.average_shortest_path_length(G)
print('average SPL:',avg_d)

最短距离度分布图代码如下:

avg_d = nx.average_shortest_path_length(G)
# 最短距离分布
pair_d = nx.shortest_path_length(G) # 任意两个节点间的距离
dd = np.array([[nx.shortest_path_length(G,i,j) for j in G if j!=i] for i in G]).reshape(-1)
print(np.mean(dd))

bins = np.arange(-0.5,max(dd)+1.5,1.0)
plt.hist(dd,bins=bins)
plt.plot([avg_d,avg_d],[0,1000],'r--',lw=3)

plt.ylim(0.650)

plt.xlabel('d')
plt.ylabel('frequency')
plt.show()

结果显示如下:
在这里插入图片描述

集聚系数

公式基本上都能找到,我这里就不放了

# 集聚系数
# nx.clustering(G) # 返回所有节点的集聚系数
# nx.clustering(G,1) # 返回特定节点的集聚系数

聚集系数 统计分布图

cc = dict(nx.clustering(g))
print('clustering coefficient of each node:', cc)
print('average clustering coefficient:',np.mean(list(cc.values())))

# 统计分布图
plt.figure(figsize=(9,5))
plt.subplot(1,2,1)
plt.hist(cc.values(), bins=10)
plt.xlabel('clustering coefficennt')
plt.ylabel('frequency')
plt.title('clustering coefficent distribution')

# 散点图
plt.subplot(1,2,2)
plt.scatter([degs[i] for i in g], [cc[i] for i in g], c='g')
plt.xlabel('k') # 度数
plt.ylabel('C(k)') # 集聚系数

结果图如下:
在这里插入图片描述

python networkx 复杂网络分析应用 NetworkX是一个Python包,用于创建、操作和研究复杂网络的结构、动态和功能,本文介绍networkx包基本操作以及应用。 阅读详情

相关推荐

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

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

lingxw的博客 8394

matlab+Gephi复杂网络画图基操

通过Gephi软件对matlab输出的复杂网络数据进行可视化

Lararararara的博客 3130

【复杂网络建模】——通过图神经网络来建模分析复杂网络

复杂网络是指由大量节点和连接组成的网络结构,它在许多领域中都有应用,包括社交网络、生物网络、信息网络等。复杂网络的研究主要关注网络的拓扑结构、动力学行为和功能特性。复杂网络的拓扑结构通常呈现出非常复杂的特征,例如小世界效应和无标度性。小世界效应指的是网络中的节点之间具有较短的平均路径长度,使得节点之间的距离变得更短。无标度性表示网络的度分布呈幂律分布,即只有少数节点具有非常高的连接度,而大部分节点的连接度较低。这些特性使得复杂网络在信息传播、灾难传播、社交影响等方面表现出独特的性质。

lingxw的博客 1万+

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

pyvis通过多种方式自定义节点和边,例如调整颜色、大小、形状等。# 创建一个网络图# 添加节点# 添加边# 可视化# 创建一个网络图# 添加节点和边# 设置节点样式# 设置边样式# 可视化在本文中,全面探讨了pyvis库的强大功能,从基础用法到高级特性,再到实际应用案例。pyvis以其直观而灵活的网络可视化工具,为用户提供了创建、定制和交互网络图的便捷途径。通过学习本文,可以了解如何快速构建各类网络图,无论是简单的无向图还是复杂的有向图。

涛哥聊Python 2347

10、复杂网络的可视化

本文介绍了复杂网络可视化的多种工具和技术,包括Gephi、Matplotlib、Plotly等常用工具的使用方法,并详细讲解了基本绘图技巧和高级可视化技术。通过案例研究展示了如何应用这些技术进行实际网络数据的可视化分析。此外,还探讨了交互式可视化和多层、动态网络的展示方法,旨在帮助读者全面掌握复杂网络的可视化技能。

blockchain9miner的博客 269

【复杂网络分析与可视化】——通过CSV文件导入Gephi进行社交网络可视化

Gephi具有强大的网络分析功能,可以进行各种网络度量,如度中心性、接近中心性、介数中心性等。它还支持社区检测算法,可以帮助用户发现网络中的群组和社区结构。此外,Gephi还提供了一组布局算法,用于在可视化时自动调整网络结构的位置,以便更好地展示网络的特征。

lingxw的博客 3万+

python复杂网络分析库networkx

文章目录1 简介安装支持四种图绘制网络图基本流程2 Graph-无向图节点边属性有向图和无向图互转3 DiGraph-有向图一些精美的图例子绘制一个DNN结构图一些图论算法最短路径问题一些其他神经网络绘制工具列表参考 1 简介 networkx是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。 利用networ...

知行合一,止于至善 1万+

Pajek复杂网络分析与可视化实战指南

Pajek是一款专为大规模复杂网络分析而设计的专业软件,自1996年由斯洛文尼亚卢布尔雅那大学开发以来,已被广泛应用于社会网络分析、生物信息学、信息科学等多个研究领域。其强大的图形处理能力和灵活的网络建模方式,使其成为研究复杂系统结构与行为的重要工具。Pajek支持多层网络建模,能够处理包含节点、边、属性在内的复杂网络结构,并提供丰富的可视化布局和拓扑分析功能。本章将从Pajek的发展历程入手,深入介绍其核心功能、用户界面组成以及典型应用场景,为后续章节的实操与分析奠定理论基础。

weixin_29885875的博客 1354

数据可视化—复杂网络关系图的绘制

数据可视化的含义 将抽象概念进行形象性表达,将抽象语言进行具象图形可视的过程。 以数据为工具,以可视化为手段,去达到描述真实,探索世界的目的。 以数据的视角,去看待世界。 数据可视化其实是一个处于不断演变之中的概念,她的边界在不断地扩大,包括技术上、理念上等等,今天所涉及的也只是我了解的数据可视化的一部分,并不全面。 数据可视化的作用 数据可视化分为解释性可视化和探索性可视化。 解释性可视化即为日常工作中使用到的一些表格、视图等,可以将数据以直观的方式展现出来,使数据更加客观、更具有说服力.

qq_19693417的博客 7015

Pajek:复杂网络的可视化与分析指南

Pajek(斯洛文尼亚语中意为“蜘蛛”)是一款专业用于分析和可视化大型网络结构的软件,自1996年由Andrej Mrvar和Vladimir Batagelj开发以来,已经成为了社会网络分析(SNA)和复杂网络研究领域中不可或缺的工具。最初作为免费的学术软件,Pajek现已拥有广泛的用户基础和丰富的功能集,支持网络分析的各个层面。社区检测是网络分析中的一个重要领域,其目的是将网络中的节点划分为若干个具有高内聚低耦合特征的社区。社区内的节点连接紧密,而社区间的连接相对稀疏。

weixin_42356162的博客 1409

MATLAB复杂网络建模与分析源码大全

复杂网络是由大量的节点以及节点间的复杂连接关系构成的网络系统,在自然界和人类社会中广泛存在,如社交网络、生物网络、技术网络等。本章将深入浅出地介绍复杂网络的基本概念,为读者构建理论基础。MATLAB(Matrix Laboratory的缩写)是一种用于算法开发、数据可视化、数据分析以及数值计算的编程语言和交互式环境。MATLAB界面主要由命令窗口、工作空间、路径和当前目录、编辑器和历史命令窗口等组成。用户可以通过编写脚本或函数,在这个环境中实现复杂的计算和数据处理任务。

weixin_33610780的博客 1303

Python图结构(复杂网络)可视化模块——networkx

文章目录1、概述2、图片展示3、举个例子3.1 导入数据包3.2 基本图结构操作函数3.3 举个栗子 1、概述 networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。 官方手册网址:networ...

caoyuan666的博客 2万+

MATLAB用拟合出的代码绘图-Tutorial_ComplexNetworks:复杂网络的计算机教程

MATLAB用拟合出的代码绘图 线虫神经元连通性的复杂网络分析 :bug: :bug: :bug: 本教程将引导您基本了解复杂的网络。 入门:PHYS3888通用教程信息 像所有PHYS3888教程一样,需要将答案输入到Canvas测验中的问题被标记为'' :red_question_mark: :red_question_mark: :red_question_mark: ”。 可选问题标记为'' :face_savoring_food: ''(只是为了好玩)和可选的高级问题被标记为'' :fire: ”。 在开始之前,请按上方绿色的“克隆或下载”按钮,将本教程的所有资料下载到计算机上,然后单击“以zip下载”。 打开Matlab并导航到将文件保存到的目录,然后按照此浏览器窗口中的说明进行Matlab中的教程(该窗口呈现README.md包含的说明)。 介绍 网络是对象(节点)和成对的节点(边缘)之间的连接的表示。 作为示例数据集,我们将使用神经元网络及其在线虫蠕虫线虫中的连通性。 :bug: ,是通过电子显微镜的艰辛重建而测得的。 注意,大脑各要素之间的连通性网络称为连接组。 许多物理学家(和其他科学家)已经对该数据进行了分析。 本教程遵循的结果,并分为三个部分: 表示和可视化网络 计算网络属性 物理嵌入 上班前:基本矩阵操作 在本节中,您将学习一些基本的命令,用于

复杂网络分析(一)

一、复杂网络是复杂系统的骨架,复杂系统可以抽象成一个网络,来反映元素之间的相互作用;要想理解一个复杂系统,需要对复杂网络进行分解成单个元素,再研究他们之间的组合是如何相互作用起来的;网络分析的重要性体现在网络结构会影响功能,功能反过来也会影响结构。 理解复杂系统的行为可以从理解系统相互作用网络的拓扑结构开始。网络拓扑结构的信息是研究系统性质和功能的基础。 一个复杂系统由大量异质元素组成,且这些元素通过多种相互作用联系。 二、复杂网络的历史 欧拉 哥尼斯堡七桥➡️图论(网络研究的基础,网络结构是理解复

weixin_38527856的博客 6186

Matlab实现复杂网络GN、ER、BA、WS、NW等算法

1.版本:matlab2019a,不会运行可私信 2.领域:基础教程 3.内容:Matlab实现复杂网络GN、ER、BA、WS、NW等算法 4.适合人群:本科,硕士等教研学习使用

双目相机测距原理

普通双目相机具有如下特点:左右两个相机位于同一平面(光轴平行),且相机参数(焦距f)一致。其原理图如下:如图所示,P点为相应的物体位置,CL和CR为左右相机光心位置,PL和PR分别为左相机和右相机拍摄的P点成像结果。f为相机焦距,Z为物体距相机的深度距离,b为左右相机基线距离根据几何关系有:则相应的深度信息计算公式为:(1)其中XL-XR为视差。其余在两侧的情况同样可以用几何关系分析得到该表达式(1),即对于普通双目相机测距可以直接通过公式(1)得到深度结果。

doudou2weiwei的博客 4548

复杂网络分析总结

阅读目录 1. 复杂网络的特点 2. 社区检测 3. 结构平衡 4. 影响最大化 5. 网络传播 6. 补充 7. 参考文献   在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络、航空网络、交通网络、计算机网络以及社交网络等等。复杂网络不仅是一种数据的表现形式,它同样也是一种科学研究的手段。复杂网络方面的研究目前受到了广泛的关注和研究,尤其是随着各...

lala_wang的博客 1万+

ctf——writeup

ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试

Child_by_dream的博客 1320

复杂网络与NetworkX——有向图与无向图的绘制

NetworkX是一个用于创建、操作和研究复杂网络的Python库。它提供了广泛的功能,使用户能够生成各种类型的图形、执行常见的图形操作、分析图形的属性以及可视化网络结构。

weixin_45897172的博客 7275

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

Python全栈入门到实战【基础篇 05】核心基础:Python的2种运行模式(交互式+命令行式)

Python代码运行模式详解:交互式与命令行式对比 摘要: Python提供两种核心运行模式:交互式(REPL)和命令行式(脚本式)。交互式模式适合快速测试语法,即时反馈结果,通过终端输入python启动,特点是无需保存、临时执行,适合验证小段代码逻辑。命令行式模式需将代码保存为.py文件后运行,适合开发完整程序,可重复执行和修改。两种模式各有优势:交互式便于学习调试,命令行式适合实际开发。掌握两种模式的使用场景和切换方法,是Python入门的关键技能,能显著提升学习效率。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4563

[Network Analysis] 复杂网络分析总结

  在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络、航空网络、交通网络、计算机网络以及社交网络等等。复杂网络不仅是一种数据的表现形式,它同样也是一种科学研究的手段。复杂网络方面的研究目前受到了广泛的关注和研究,尤其是随着各种在线社交平台的蓬勃发展,各领域对于在线社交网络的研究也越来越火。研究生期间,本人的研究方向也是一直与复杂网络打交道,现在马上就要毕业了,写...

weixin_34277853的博客 6433

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 341
上一篇: 试题 算法提高 字符串的操作(pyhton详细版)
下一篇: 试题 算法提高 字符串压缩
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值