网络图简介
网络图(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
总节点数:19
总边数:56
🧠 神经网络
输入层→隐藏层→输出层
层间全连接
🏢 组织架构
CEO→部门→团队→员工
层级结构
📊 二分图
用户-商品、作者-论文
两类节点的关联
💡 多部图:节点被划分为多个不相交的集合(层),边只存在于不同层的节点之间。 这种结构广泛用于建模层级系统、推荐系统、神经网络等。
🌈 完全图与彩虹着色
Complete Graph & Rainbow Coloring - Ringel猜想可视化
选择奇数节点以满足Ringel猜想条件
🎨 彩虹着色规则
边的颜色由节点在环上的最短距离决定:
📐 Ringel猜想
猜想内容:任何有2n+1个节点的完全图, 都可以被n+1个节点的任意树完美覆盖。
状态:2020年已被证明为真!
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)——度分布服从幂律。 理解这些普遍性质,有助于我们设计更鲁棒的网络、预测网络演化、 识别关键节点、发现社区结构。
从数据可视化的角度看,网络图是"关系可视化"的典范。 与展示数值大小的条形图、折线图不同,网络图专注于展示"谁与谁相连"。 节点的大小、颜色、形状可以编码属性;边的粗细、颜色、样式可以编码权重或类型; 整体的布局可以编码结构或层次。通过交互式可视化,用户可以探索局部结构、 过滤噪声、高亮路径、动态演化。在大数据时代,网络图不仅是研究工具, 更是思维工具——它帮助我们从"孤立的点"转向"连接的网", 从"个体行为"转向"涌现性质",从"线性因果"转向"网络效应"。 掌握网络图分析,就是掌握理解复杂世界的新视角。