← 返回Book 2目录

网络图

Network Graphs with NetworkX

从社交网络到生物网络的可视化之美

网络图简介

网络图(Network Graph)是表示实体间关系的强大工具。在数学中称为图论(Graph Theory), 由节点(Nodes/Vertices)和边(Edges)组成。网络无处不在—— 社交网络中人与人的联系、互联网中服务器的连接、生物网络中蛋白质的相互作用、 交通网络中城市间的路线,都可以用网络图来建模和分析。 NetworkX是Python中最流行的网络分析库,提供了丰富的图算法和可视化工具。

🔵 节点(Nodes)

代表实体或对象。
可以是人、城市、基因、单词等。
可以有属性(位置、权重等)。

➡️ 边(Edges)

代表关系或连接。
可以有向或无向。
可以有权重(距离、强度等)。

📊 图类型

完全图、随机图、树、网格
二部图、多部图、有向图
加权图、多重图等

交互式网络图探索

通过调整图类型、节点数量和布局算法,直观理解不同网络结构的特征。 观察度数和中心性如何影响节点的重要性。

🕸️ 网络图探索器(NetworkX)

调整图类型、节点数量和布局算法,探索网络图的结构和美学

📊 图信息

节点数: 15
边数: 28
平均度数: 3.73

🎨 布局说明

力导向:斥力+引力平衡

🎯 探索建议

  • • 完全图K_n:n个节点,n(n-1)/2条边
  • • 随机图:调整边密度观察连通性变化
  • • 树:无环连通图,n-1条边
  • • 星形图:中心节点度数=n-1
  • • 力导向布局最适合随机图

📐 布局算法

  • • 力导向:模拟物理弹簧系统
  • • 圆形:节点均匀分布在圆周
  • • 网格:规则矩形排列
  • • 辐射:按度数分层展开

🔗 随机几何图

Random Geometric Graph - 基于空间距离的网络连接

📊 图统计

节点数:30

边数:49

平均度数:3.27

最大度数:6

📐 空间网络

节点随机分布在空间中
距离小于阈值则连边

🎨 度数可视化

节点颜色深度表示度数
节点大小与度数成正比

🌐 应用场景

无线网络、社交网络
传感器网络、流行病传播

💡 核心概念:随机几何图(RGG)模拟了物理空间中的网络。节点位置随机,只有距离足够近的节点才会连接。 这种模型广泛用于无线通信、社交网络分析等领域。

🏗️ 多部图

Multipartite Graph - 分层网络结构

各层节点数

5
4
3
4
3

📊 图统计

层数:5

总节点数:19

总边数:56

第1层第2层第3层第4层第5层

🧠 神经网络

输入层→隐藏层→输出层
层间全连接

🏢 组织架构

CEO→部门→团队→员工
层级结构

📊 二分图

用户-商品、作者-论文
两类节点的关联

💡 多部图:节点被划分为多个不相交的集合(层),边只存在于不同层的节点之间。 这种结构广泛用于建模层级系统、推荐系统、神经网络等。

🌈 完全图与彩虹着色

Complete Graph & Rainbow Coloring - Ringel猜想可视化

选择奇数节点以满足Ringel猜想条件

🎨 彩虹着色规则

边的颜色由节点在环上的最短距离决定:

距离1
距离2
距离3
距离4
距离5
距离6

📐 Ringel猜想

猜想内容:任何有2n+1个节点的完全图, 都可以被n+1个节点的任意树完美覆盖。
状态:2020年已被证明为真!

0123456789101112

Kₙ 完全图

n个节点两两相连
边数 = n(n-1)/2

圆对称性

环形布局利用旋转对称
简化着色和分析

图论应用

调度、锦标赛、分解
组合设计

💡 可视化意义:彩虹着色不仅美观,更揭示了完全图的结构。同色边形成特定模式(正多边形), 这种对称性是证明Ringel猜想的关键工具。

🔺 三元组类型

Triad Types - 有向网络中的16种三节点结构

📊 命名规则

3位数字:互惠对数、非对称对数、空对数
字母后缀:
U=上行(Up)、D=下行(Down)
C=循环(Cyclic)、T=传递(Transitive)

🔬 社会网络分析

三元组是分析社会结构的基本单位。
300:完全互惠群体
030T:传递性(朋友的朋友)
030C:循环性(层级结构)

💡 三元组普查:通过统计网络中各类三元组的数量,可以揭示网络的结构特征。 例如,传递三角(030T)多表示"朋友的朋友也是朋友"的社交特性, 而循环三角(030C)多则暗示层级或竞争关系。

Atlas 图集

图集(Graph Atlas)收录了所有6个节点以下的非同构连通图,共142个。 这是图论研究的基础数据库,用于分类和识别小型图结构。 使用Graphviz的neato布局算法进行可视化。

📚 技术要点

  • • nx.graph_atlas_g(): 获取图集
  • • 过滤:跳过0-2节点(无边)
  • • 同构检测:GraphMatcher
  • • 不相交并集:disjoint_union

🎨 可视化

  • • Graphviz neato布局(物理模拟)
  • • 连通分量随机着色
  • • 小节点(node_size=40)
  • • 无标签(with_labels=False)

Chess Masters 国际象棋大师网络

基于1886-1985年世界国际象棋锦标赛的685场比赛构建的多重有向图(MultiDiGraph)。 节点代表棋手,有向边代表比赛(白棋→黑棋),边包含比赛日期、结果、开局代码等信息。 这是分析竞技网络的经典案例。

🔢 数据结构

节点:棋手姓名
边:多重有向边
属性:Event, Date, Result, ECO, Site

📊 可视化编码

边宽度:∝ 比赛场次
节点大小:∝ 获胜次数
布局:Kamada-Kawai

🎯 分析示例

ECO开局分类
Sicilian Najdorff变化
"Poisoned Pawn"战术

Knuth Miles 里程图

来自Donald Knuth《Stanford GraphBase》的经典地理网络数据集, 包含美国128个城市及其间的距离。每个节点有经纬度和人口属性, 边的权重是城市间的里程数。通过筛选距离<300英里的边, 构建区域连通性网络。

🗺️ 节点属性

  • • position: (经度, 纬度)
  • • population: 人口(千人)
  • • 坐标转换:字符串→浮点/100

🎨 地图可视化

  • • Cartopy地图背景(Lambert投影)
  • • 节点颜色∝度数(连接城市数)
  • • 节点大小∝人口
  • • 边:距离<300英里

Betweenness Centrality 介数中心性

基于WormNet v.3数据集的秀丽隐杆线虫(C. elegans)基因功能关联网络。 介数中心性(Betweenness Centrality)衡量节点在网络中的"桥梁"作用—— 即有多少最短路径经过该节点。高介数中心性的基因往往在生物过程中起关键调控作用。

🧬 生物网络特征

  • • 数据源:WormNet基因关联
  • • 节点:基因
  • • 边:功能关联(正相关)
  • • 过滤:度数<10的节点

📊 分析方法

  • • betweenness_centrality()
  • • 社区检测:label propagation
  • • 节点颜色∝社区ID
  • • 节点大小∝中心性

其他网络类型与布局

🌳 Circular Tree 环形树

平衡树(branching factor=3, depth=5)使用Graphviz twopi布局, 节点呈辐射状排列,适合展示层次结构。

nx.balanced_tree(3, 5)
nx.nx_agraph.graphviz_layout(G, prog='twopi')

🌐 LANL Routes 路由网络

从186个Internet站点到洛斯阿拉莫斯国家实验室(LANL)的路由。 节点颜色表示往返时间(RTT),展示网络延迟分布。

node_color = [G.rtt[v] for v in G]

🎨 Rainbow Coloring 彩虹着色

完全图K₁₃的边按节点距离着色(6种颜色)。 与Ringel猜想相关:任何2n+1节点的完全图可以被n+1节点的树覆盖。

edge_color by node_dist

📐 Multipartite Graph 多部图

8层多部图,相邻层之间完全连接。 每层不同颜色和节点数,展示分层网络结构。

nx.multipartite_layout(G, subset_key='layer')

📍 Random Geometric Graph 随机几何图

200个节点随机分布在单位正方形,距离<0.125则连边。 节点颜色表示到中心节点的最短路径长度。

nx.random_geometric_graph(200, 0.125)

🔺 Triad Types 三元组类型

有向图中的16种三元组关系。MAN分类法(Mutual/Asymmetric/Null dyads) + 方向标注(U/D/C/T),用于社会网络分析。

003, 012, 102, 021D, 021U, 030T...

🚗 TSP 旅行商问题

20个节点的旅行商问题,使用Christofides算法求近似解。 红色路径是TSP路线,蓝色边是几何邻接关系。

nx_app.christofides(G, weight='weight')

📝 Words/Ladder Graph 单词阶梯

5757个5字母英文单词,差1个字母则连边(14,135条边)。 展示最短路径:chaos→order, nodes→graph等。

edit_distance_one(word)

🔍 Beam Search 束搜索

渐进式加宽束搜索算法,寻找高特征向量中心性的节点。 束宽度指数增长(1, 2, 4, 8...),直到找到目标。

nx.bfs_beam_edges(G, source, value, width)

💡 核心洞察

网络图是21世纪最重要的数据结构和分析工具之一。它超越了传统的表格和矩阵, 能够直观地表示复杂的关系和结构。从六度分离理论(Six Degrees of Separation) 到PageRank算法,从社交网络分析到蛋白质相互作用网络,图论为理解复杂系统 提供了统一的语言和工具。NetworkX库的强大之处在于将抽象的图论算法 转化为简洁的Python代码,让研究者能够快速实现从图构建、分析到可视化的完整流程。

图的可视化不仅是美学问题,更是认知科学问题。不同的布局算法揭示图的不同性质: 力导向布局通过模拟物理系统找到平衡状态,适合展示社区结构; 环形布局强调对称性和周期性;层次布局揭示树形或有向无环图的结构; 地理布局保留空间约束。选择合适的布局算法,就像选择合适的坐标系一样重要—— 它决定了我们能从数据中看到什么模式。介数中心性、PageRank、 社区检测等图算法,则从定量角度刻画了网络的结构特征。

本章展示的13个NetworkX示例覆盖了图论的核心概念和应用场景。 Chess Masters网络展示了竞技网络中的主导关系;Knuth Miles图展示了 地理约束下的网络结构;WormNet基因网络揭示了生物系统的模块化组织; Words Ladder图证明了语言的网络性质。这些真实世界的网络都具有 小世界性质(Small-world Property)——高聚类系数和短平均路径长度, 以及无标度性质(Scale-free Property)——度分布服从幂律。 理解这些普遍性质,有助于我们设计更鲁棒的网络、预测网络演化、 识别关键节点、发现社区结构。

从数据可视化的角度看,网络图是"关系可视化"的典范。 与展示数值大小的条形图、折线图不同,网络图专注于展示"谁与谁相连"。 节点的大小、颜色、形状可以编码属性;边的粗细、颜色、样式可以编码权重或类型; 整体的布局可以编码结构或层次。通过交互式可视化,用户可以探索局部结构、 过滤噪声、高亮路径、动态演化。在大数据时代,网络图不仅是研究工具, 更是思维工具——它帮助我们从"孤立的点"转向"连接的网", 从"个体行为"转向"涌现性质",从"线性因果"转向"网络效应"。 掌握网络图分析,就是掌握理解复杂世界的新视角。