python 使用networkx绘制带权无向图和带权有向图,以及标注特定路径
目录
一、图的创建
# 图的创建
# 图的方法
# networkx
二、networkx绘制带权无向图
三、networkx绘制带权有向图
四、networkx标注特定路径
一、图的创建
Networkx很容易创建图、向图中添加顶点和边、从图中删除顶点和边,也可以查看、删除顶点和边的属性。
# 图的创建
类型:Graph()类、DiGraph()类、MultiGraph()类和MultiDiGraph() 类分别用来创建 无向图、有向图、多图和有向多图。
创建一个没有节点和边的空图。
import networkx as nx
import networkx as nx # 导入 NetworkX 工具包
# 创建 图
G1 = nx.Graph() # 创建:空的 无向图
G2 = nx.DiGraph() #创建:空的 有向图
G3 = nx.MultiGraph() #创建:空的 多图
G4 = nx.MultiDiGraph() #创建:空的 有向多图
# 图的方法
# networkx
NetworkX 是一个进行复杂图形网络分析的 Python 软件包。要了解 NetworkX 功能,首先需要了解图形。图形是一种数学结构,用于对物理、生物、社会和信息系统中多种类型的关系和过程进行建模。图形由通过边缘连接(表示这些实体之间的关系)的节点或顶点(表示系统实体)构成。图形处理是一种能够穿梭各边缘和节点的功能,用于发现和理解网络中关联数据之间的复杂关系和/或优化路径。
其中,nx.draw() 和 nx.draw_networkx() 是最基本的绘图函数,并可以通过自定义函数属性或其它绘图函数设置不同的绘图要求。
二、networkx绘制带权无向图
import matplotlib.pyplot as plt # 导入 Matplotlib 工具包
import networkx as nx # 导入 NetworkX 工具包# 问题 2:无向图的最短路问题(司守奎,数学建模算法与应用,P43,例4.3)
G2 = nx.Graph() # 创建无向图
G2.add_weighted_edges_from([(1, 2, 2), (1, 3, 8), (1, 4, 1),(2, 3, 6), (2, 5, 1),(3, 4, 7), (3, 5, 5), (3, 6, 1), (3, 7, 2),(4, 7, 9),(5, 6, 3), (5, 8, 2), (5, 9, 9),(6, 7, 4), (6, 9, 6),(7, 9, 3), (7, 10, 1),(8, 9, 7), (8, 11, 9),(9, 10, 1), (9, 11, 2),(10, 11, 4)]) # 向图中添加多条赋权边: (node1,node2,weight)# 两个指定顶点之间的最短加权路径
minWPath_v1_v5 = nx.dijkstra_path(G2, source=1, target=5) # 顶点 0 到 顶点 3 的最短加权路径
print("顶点 v1 到 顶点 v5 的最短加权路径: ", minWPath_v1_v5)
# 两个指定顶点之间的最短加权路径的长度
lMinWPath_v1_v5 = nx.dijkstra_path_length(G2, source=1, target=5) # 最短加权路径长度
print("顶点 v1 到 顶点 v5 的最短加权路径长度: ", lMinWPath_v1_v5)
# === 关注 Youcans 原创系列(https://blog.csdn.net/youcans)===
pos = nx.spring_layout(G2) # 用 FR算法排列节点
nx.draw(G2, pos, with_labels=True, alpha=0.5)
labels = nx.get_edge_attributes(G2, 'weight')
nx.draw_networkx_edge_labels(G2, pos, edge_labels=labels)
plt.show()
三、networkx绘制带权有向图
import matplotlib.pyplot as plt # 导入 Matplotlib 工具包
import networkx as nx # 导入 NetworkX 工具包# 问题 2:无向图的最短路问题(司守奎,数学建模算法与应用,P43,例4.3)
G2 = nx.DiGraph() # 创建:空的 有向图G2.add_edge(1, 2, weight=1) # 添加 带权边,weight表示边权
G2.add_edge(5, 3, weight=7)
G2.add_edge(2, 3, weight=4)
G2.add_edge(3, 4, weight=3)
G2.add_edge(7, 9, weight=4)
G2.add_edge(3, 5, weight=5)
G2.add_edge(4, 7, weight=9)# 两个指定顶点之间的最短加权路径
minWPath_v1_v5 = nx.dijkstra_path(G2, source=1, target=5) # 顶点 0 到 顶点 3 的最短加权路径
print("顶点 v1 到 顶点 v5 的最短加权路径: ", minWPath_v1_v5)
# 两个指定顶点之间的最短加权路径的长度
lMinWPath_v1_v5 = nx.dijkstra_path_length(G2, source=1, target=5) # 最短加权路径长度
print("顶点 v1 到 顶点 v5 的最短加权路径长度: ", lMinWPath_v1_v5)
# === 关注 Youcans 原创系列(https://blog.csdn.net/youcans)===
pos = nx.spring_layout(G2) # 用 FR算法排列节点
nx.draw(G2, pos, with_labels=True, alpha=0.5)
labels = nx.get_edge_attributes(G2, 'weight')
nx.draw_networkx_edge_labels(G2, pos, edge_labels=labels)
plt.show()
四、networkx标注特定路径
import matplotlib.pyplot as plt # 导入 Matplotlib 工具包
import networkx as nx # 导入 NetworkX 工具包# 问题 2:无向图的最短路问题(司守奎,数学建模算法与应用,P43,例4.3)
G2 = nx.DiGraph() # 创建:空的 有向图G2.add_edge(1, 2, weight=1) # 添加 带权边,weight表示边权
G2.add_edge(5, 3, weight=7)
G2.add_edge(2, 3, weight=4)
G2.add_edge(3, 4, weight=3)
G2.add_edge(7, 9, weight=4)
G2.add_edge(3, 5, weight=5)
G2.add_edge(4, 7, weight=9)# 两个指定顶点之间的最短加权路径
minWPath_v1_v5 = nx.dijkstra_path(G2, source=1, target=5) # 顶点 0 到 顶点 3 的最短加权路径
print("顶点 v1 到 顶点 v5 的最短加权路径: ", minWPath_v1_v5)
# 两个指定顶点之间的最短加权路径的长度
lMinWPath_v1_v5 = nx.dijkstra_path_length(G2, source=1, target=5) # 最短加权路径长度
print("顶点 v1 到 顶点 v5 的最短加权路径长度: ", lMinWPath_v1_v5)
# === 关注 Youcans 原创系列(https://blog.csdn.net/youcans)===
pos = nx.spring_layout(G2) # 用 FR算法排列节点
nx.draw(G2, pos, with_labels=True, alpha=0.5)
labels = nx.get_edge_attributes(G2, 'weight')
nx.draw_networkx_edge_labels(G2, pos, edge_labels=labels)
# plt.show()edgeList = []
for i in range(len(minWPath_v1_v5)-1):edgeList.append((minWPath_v1_v5[i], minWPath_v1_v5[i+1]))
nx.draw_networkx_edges(G2, pos, edgelist=edgeList, edge_color='m', width=4) # 设置边的颜色
plt.show() # YouCans, XUPT
python 使用networkx绘制带权无向图和带权有向图,以及标注特定路径相关推荐
- python画有权重网络图_使用Python的networkx绘制精美网络图教程
最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...
- 用python画关系网络图-使用Python的networkx绘制精美网络图教程
最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...
- 用Python的networkx绘制精美网络图
最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.git ...
- Python绘制三角函数图(sin\cos\tan)并标注特定范围
根据我们指定的条件检索函数中的元素 import matplotlib.pyplot as plt import numpy as npa = np.linspace(0, 2 * np.pi, 50 ...
- 使用NetworkX绘制深度神经网络结构图(Python)
本文将展示如何利用Python中的NetworkX模块来绘制深度神经网络(DNN)结构图. 已知我们创建的DNN结构图如下: 该DNN模型由输入层.隐藏层.输出层和softmax函数组成,每一层的神经 ...
- python画有权重网络图_Python可视化之NetworkX绘制网络图\节点关系
除了Gephi,python的NetworkX也是绘制网络图的利器,后者功能更强大,能兼容Gephi的一些绘制结果,但相应学习成本也更高点.另外似乎还有一个igraph-python库,后期可以学习一 ...
- 基于C++的带权无向图的实现 (三)- Prim最小生成树算法
该系列文章是本人整理的有关带权无向图的数据结构和算法的分析与实现,若要查看源码可以访问我的github仓库,如有问题或者建议欢迎各位指出. 目录 基于C++的带权无向图的实现 (一)- 数据结构 基于 ...
- 数据结构几种常见图的邻接矩阵的画法(有向图带权值,有向图不带权值,无向图带权值,无向图不带权值)
这不马上要期末考试了,复习的时候突然发现了有好几种图的邻接矩阵需要画,在网上找了半天结果发现也没有特别详细的总结,所以经过总结写一下吧,希望对有需要的人,有点帮助吧!!!!(如有不对还请见谅!!!!! ...
- 图的建立、遍历及其应用(设图结点的元素类型为char,建立一个不少于8个顶点的带权无向图G,实现以下图的各种基本操作的程序)
实验目的:通过实验达到: ⑴ 理解和掌握图的基本概念.基本逻辑结构: ⑵ 理解和掌握图的邻接矩阵存储结构.邻接链表存储结构: ⑶ 理解和掌握图的DFS.BFS遍历操作的思想及其实现: ⑷ 加深对堆栈. ...
- python库-networkx模块
python库-networkx模块 networkx模块 networkx模块(一) 1 安装和调用 2 图 2.1 创建图 2.2 清空图 3. 节点 3.1 添加一个节点 3.2 从各种iter ...
最新文章
- k8s系列---部署集群
- 31.4. Open Source Development for the D Programming Language
- Linux清理磁盘挂载点方法(亲测有效)
- 汽车电子专业知识篇(三十二)-整车电控系统及架构设计技术
- SpringBoot的整合————一些常用工具类依赖及用法总结
- 《Beginning Linux Programming》读书笔记(四)
- springmvc 异常001---在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案
- 015、JVM实战总结:大厂面试题:什么情况下JVM内存中的一个对象会被垃圾回收?
- [NVIDIA] Ububtu 获取 CUDA_ARCH
- [搬运] mac下安装GDB
- systemctl的使用
- [渝粤教育] 西南科技大学 作物生产新理论与新技术 在线考试复习资料
- 跨平台的PHP+MySQL_跨平台的PHP+MySQL
- python31001python3_Python310第二个alpha版本最新特性值得关注Python 3100a0 文档
- 微型计算机原理与应用简称为啥,微型计算机原理与应用知识点总结.pdf
- 分享76网络科技88教育教学47公司企业PPT模板
- 神器octotree
- 路由器配置vlan桥接
- html背景纯白,纯白色背景图片全白
- 三校生高考计算机基础知识,三校生高考计算机模拟试卷(一)
热门文章
- 苹果7系统更新12无服务器,别再为苹果手机无法更新系统犯难,这几种方式帮你解决!...
- AE CC2018/64位安装步骤及各种出现问题!!(真的装了好久)
- mysql 查看二进制_查看mysql二进制文件(binlog文件)
- GeoDa 空间自相关操作步骤
- 移动端证件识别OCR
- # 研究杂感 × VOSviewer(第二辑)
- 一个普通专科生,拿什么拯救你的未来?(精简版)
- BMFont制作美术字体包教包会
- 两个平面的位置关系和判定方程组解_精品获奖教案 1.2.4平面与平面的位置关系(2)教案 苏教版必修2...
- 北理乐学c语言答案猴子,【北理乐学】机智的大师