第三十章:Python-NetworkX库:创建、利用与研究复杂网络

打印 上一主题 下一主题

主题 1953|帖子 1953|积分 5859

一、NetworkX库简介

NetworkX是一个强盛的Python库,用于创建、利用和研究复杂网络(图)的结构、动态和功能。它支持多种范例的图,包罗无向图、有向图、加权图和多重图,并提供了丰富的图论算法和可视化工具。资源绑定附上完整资料供读者参考学习!
二、常见利用示例

1. 创建图

Python示例代码

  1. import networkx as nx
  2. # 创建一个空的无向图
  3. G = nx.Graph()
  4. # 添加节点
  5. G.add_node(1)
  6. G.add_nodes_from([2, 3])
  7. # 添加边
  8. G.add_edge(1, 2)
  9. G.add_edges_from([(2, 3), (3, 1)])
  10. # 查看节点和边
  11. print("节点:", G.nodes())
  12. print("边:", G.edges())
复制代码
结果展示



2. 创建有向图

Python示例代码

  1. import networkx as nx
  2. # 创建一个有向图
  3. DG = nx.DiGraph()
  4. # 添加节点和边
  5. DG.add_edges_from([(1, 2), (2, 3), (3, 1)])
  6. # 打印有向图的节点和边
  7. print("节点:", DG.nodes())
  8. print("有向边:", DG.edges())
复制代码
结果展示



3. 创建加权图

Python示例代码

  1. import networkx as nx
  2. # 创建一个加权无向图
  3. WG = nx.Graph()
  4. # 添加带权重的边
  5. WG.add_edge(1, 2, weight=4.2)
  6. WG.add_edge(2, 3, weight=3.1)
  7. # 获取边的权重
  8. print(WG[1][2]['weight'])
复制代码
结果展示



4. 图的可视化

Python示例代码

  1. import matplotlib.pyplot as plt
  2. import networkx as nx
  3. # 创建一个空的无向图
  4. G = nx.Graph()
  5. # 添加节点
  6. G.add_node(1)
  7. G.add_nodes_from([2, 3])
  8. # 添加边
  9. G.add_edge(1, 2)
  10. G.add_edges_from([(2, 3), (3, 1)])
  11. # 绘制图
  12. nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='blue')
  13. plt.show()
复制代码
结果展示



三、高级利用示例

1. 盘算最短路径

Python示例代码

  1. import matplotlib.pyplot as plt
  2. import networkx as nx
  3. # 创建一个空的无向图
  4. G = nx.Graph()
  5. # 添加节点
  6. G.add_node(1)
  7. G.add_nodes_from([2, 3,4,5])
  8. # 添加边
  9. G.add_edge(1, 2)
  10. G.add_edges_from([(2, 3), (3, 1),(3,4),(5,4)])
  11. # 绘制图
  12. nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='blue')
  13. plt.show()
  14. # 计算最短路径
  15. path = nx.shortest_path(G, source=1, target=3)
  16. print("最短路径:", path)
复制代码
结果展示




2. 盘算节点中央性

Python示例代码

  1. import matplotlib.pyplot as plt
  2. import networkx as nx
  3. # 创建一个空的无向图
  4. G = nx.Graph()
  5. # 添加节点
  6. G.add_node(1)
  7. G.add_nodes_from([2, 3,4,5])
  8. # 添加边
  9. G.add_edge(1, 2)
  10. G.add_edges_from([(2, 3), (3, 1),(3,4),(2,4),(5,3)])
  11. # 绘制图
  12. nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='yellow')
  13. plt.show()
  14. # 计算节点的度中心性
  15. degree_centrality = nx.degree_centrality(G)
  16. print("度中心性:", degree_centrality)
  17. # 计算节点的介数中心性
  18. betweenness_centrality = nx.betweenness_centrality(G)
  19. print("介数中心性:", betweenness_centrality)
复制代码
结果展示





3. 社区检测

Python示例代码

  1. from networkx.algorithms.community import greedy_modularity_communities
  2. import matplotlib.pyplot as plt
  3. import networkx as nx
  4. # 创建一个空的无向图
  5. G = nx.Graph()
  6. # 添加节点
  7. G.add_node(1)
  8. G.add_nodes_from([2,3,4,5])
  9. # 添加边
  10. G.add_edge(1, 4)
  11. G.add_edges_from([(4,3), (3, 2),(2,5),(5,1),(4,5)])
  12. # 绘制图
  13. nx.draw(G, with_labels=True, node_color='blue', node_size=1500, edge_color='green')
  14. plt.show()
  15. # 检测社区
  16. communities = greedy_modularity_communities(G)
  17. print("社区划分:", communities)
复制代码
结果展示





四、函数参数总结

函数名参数说明add_node添加一个节点,参数为节点ID和属性(可选)add_nodes_from批量添加节点,参数为节点列表add_edge添加一条边,参数为两个节点ID和边属性(可选)add_edges_from批量添加边,参数为边列表degree获取节点的度数shortest_path盘算两个节点之间的最短路径degree_centrality盘算节点的度中央性betweenness_centrality盘算节点的介数中央性greedy_modularity_communities检测社区结构 五、总结

   NetworkX是一个功能强盛的图处理库,可以或许轻松创建、利用和分析图结构。无论是简单的图创建还是复杂的图分析,NetworkX都能为开辟者提供高效的工具。通过NetworkX,你可以从交际网络、通讯网络、物流网络等多种范畴中,快速构建和处理图结构,分析图中的各种关系与特性。资源绑定附上完整资料供读者参考学习!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表