利用matplotlib和networkx绘制有向图[显示边的权重]

news/2024/5/19 14:53:39

使用Python中的matplotlib和networkx库来绘制一个有向图,并显示边的权重标签。


1. 定义了节点和边:节点是一个包含5个节点的列表,边是一个包含各个边以及它们的权重的列表。
2. 创建了一个有向图对象 `G`。
3. 向图中添加节点和边。
4. 设置了节点的布局,这里使用了Spring布局,它会尽可能地使得节点间的边长相等,并保持节点间的相对位置,`k`参数是一个布局调整参数。
5. 使用 `nx.draw()` 函数绘制了有向图,其中 `pos` 是节点的位置,`with_labels=True` 表示显示节点标签,`node_size` 控制节点的大小,`node_color` 是节点的颜色,`font_size` 是标签的字体大小,`arrows=True` 表示显示边的方向。
6. 添加了边的权重标签,用以显示每条边的权重。利用 `nx.draw_networkx_edge_labels()` 函数,将权重标签添加到相应的边上,并设置了标签的颜色和位置。
7. 最后使用 `plt.show()` 函数显示绘制好的有向图。
这段代码的核心是使用了 `networkx` 库来创建和操作图形数据结构,并使用 `matplotlib` 库来进行图形绘制。

import matplotlib.pyplot as plt
import networkx as nx# 节点和边
nodes = [0, 1, 2, 3, 4]
edges = [(0, 1, {'weight': 10}), (0, 3, {'weight': 5}), (1, 2, {'weight': 1}), (1, 3, {'weight': 2}),(2, 4, {'weight': 4}), (3, 1, {'weight': 3}), (3, 2, {'weight': 9}), (3, 4, {'weight': 2}),(4, 0, {'weight': 7}), (4, 2, {'weight': 6})
]# 创建有向图
G = nx.DiGraph()# 添加节点和边
G.add_nodes_from(nodes)
G.add_edges_from(edges)# 设置布局
pos = nx.spring_layout(G, k=0.5)# 绘制有向图,确保显示边的方向
nx.draw(G, pos, with_labels=True, node_size=700, node_color="lightblue", font_size=12, arrows=True)# 添加权重标签
edge_labels = {}
for u, v, data in G.edges(data=True):weight = data['weight']edge_labels[(u, v)] = f"{u}->{v}:{weight}"  # 将节点和权重标签放在一起显示nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_color='black', label_pos=0.3)plt.show()


http://www.mrgr.cn/p/47777728

相关文章

Linux第三节--常见的指令介绍集合(持续更新中)

点赞关注不迷路!,本节涉及初识Linux第三节,主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! Linux下基本指令 1. man指令 Linu…

从字符串A中删除字符串B中存在的字母(不区分大小写)C语言实现

实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除。C语言实现。V1.0 2024年5月7日 发布于博客园题目:​ 设计一程序实现功能,处理字符串A,处理规则是:只要B字符串里面有的字母,不区分大小写,一律从A字符串中删掉。…

Deep learning Part Five RNN--24.4.29

接着上期,CBOW模型无法解决文章内容过长的单词预测的,那该如何解决呢? 除此之外,根据图中5-5的左图所示,在CBOW模型的中间层求单词向量的和,这时就会出现另一个问题的,那就是上下文的单词的顺序…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作,用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

【第10章】spring-mvc转发和重定向

文章目录 前言一、准备二、转发1. 视图解析器(推荐)2. 关键字(forward)3. request 三、重定向1.关键字(redirect)2. HttpServletResponse 四、区别总结 前言 前面介绍了视图解析器的使用,但是对我们原有转发和重定向有影响,接下来我们通过案例,来使用学习转发和重定向的用法。…

[SNOI2019] 数论

这一道题目最好记住,就是两个模数之间在互相作用 首先转化一下,我们枚举其中一个集合然后快速查询另一个集合 也就变成了\((a_i+kP)mod\: Q∈B\) 然后看这篇文章的建模 解释一下 它是将\([0,Q)\)中的每一个数弄成一个环,就像下面这样然后加一个\(P\)就相当于瞬时间走\(P\)步…

andriod sdk 安装

1、下载andriod sdk tools https://www.androiddevtools.cn/ 2、解压zip包 dos窗口进入 解压路劲 执行 tools\android.bat update sdk --no-ui(解压目录中SDK Readme.txt)

docker compose mysql主从复制及orchestrator高可用使用

1.orchestrator 功能演示: 1.1 多级级联: 1.2 主从切换: 切换成功后,原来的主库是红色的,需要在主库的配置页面点击“start replication ”,重新连接上新的主库。 1.3 主从故障,从库自动切换新…

python学习笔记-01

python 在学习之前要了解的事项: 1.python缩进语法要求较为严格 2.是解释型语言 3.python2版本和python3版本不兼容 本系列笔记全部基于python3 1.hello world 安装好python之后,可以直接打开python,也可以通过cmd进入python。 print(&qu…

LT2611UX四端口 LVDS转 HDMI2.0,带音频

描述LT2611UX 是一款面向机顶盒、DVD 应用的高性能 LVDS 至 HDMI2.0 转换器。LVDS输入可配置为单端口、双端口或四端口,具有1个高速时钟通道和3~4个高速数据通道,工作速率最高为1.2Gbps/通道,可支持高达19.2Gbps的总带宽。LT2611UX 支持灵活的…

OpenHarmony 实战开发——ABI

OpenHarmony系统支持丰富的设备形态,支持多种架构指令集,支持多种操作系统内核;为了应用在各种OpenHarmony设备上的兼容性,本文定义了"OHOS" ABI(Application Binary Interface)的基础标准&#…

R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Boxs M检验可视化

全文链接:https://tecdat.cn/?p=33609 原文出处:拓端数据部落公众号 背景 Reaven和Miller(1979)研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D,并发现了一个奇特的图案,看起来像是一个…

R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油价格时间序列

原文链接:http://tecdat.cn/?p=22458 原文出处:拓端数据部落公众号简介 本文提供了一个经济案例。着重于原油市场的例子。简要地提供了在经济学中使用模型平均和贝叶斯方法的论据,使用了动态模型平均法(DMA),并与ARIMA、TVP等方法进行比较。希望对经济和金融领域的从业…

武汉星起航:解锁亚马逊平台运营新技能,助您跨境电商更上一层楼

随着全球化趋势的加强和互联网技术的飞速发展,跨境电商行业正迎来前所未有的发展机遇。亚马逊作为全球最大的电商平台之一,在中国开通了17个市场,其中北美、欧洲、亚洲站点尤为成熟,这些地区的经济发达,消费者收入高&a…

数据分享|广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言实现

全文链接:https://tecdat.cn/?p=36112 原文出处:拓端数据部落公众号 淋巴结疾病作为一类复杂的健康问题,其风险预测一直是临床和公共卫生领域的研究热点。随着统计学的进步和计算能力的提升,广义线性模型(GLM)成为了分析这类数据的有力工具。特别是当数据呈现比例特性时…

Flink窗口理论到实践 | 大数据技术

⭐简单说两句⭐ ✨ 正在努力的小叮当~ 💖 超级爱分享,分享各种有趣干货! 👩‍💻 提供:模拟面试 | 简历诊断 | 独家简历模板 🌈 感谢关注,关注了你就是我的超级粉丝啦! &a…

AutoMQ 系统测试体系揭秘

01 前言 Apache Kafka 有着比较完备的自测体系。除了常规的单元测试和集成测试以外,Apache Kafka 还有着 1000 的“系统集成和性能测试”(以下简称系统测试)。系统测试会拉起一套真实的 Kafka 集群,并模拟用户使用 Kafka 集群的方…

QT程序通过GPIB-USB-HS转接线控制数字万用表

1、硬件准备 1.1、数字万用表 型号 :Agilent 34401A 前面图示: 后面图示:有GPIB接口 1.2、GPIB-USB-HS转接线 2、GPIB协议基础了解 2.1、引脚 8条数据线:DIO1 ~ DIO8 5条管理线:IFC、ATN、REN、EOI、SRQ 3条交握线…

大模型高效微调详解-从Adpter、PrefixTuning到LoRA

一、背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练,然后再针对特定下游任务进行微调,达到领域适应(迁移学习)的目的。指令微调是预训练语言模型微调的主流范式其目的是尽量让下游任务的形式尽量接近预训练任务,从而减少下游任务和预训练任务之间的Gap, 实…

找出俩个字符串的相同并删除

找出俩个字符串相同并删除 今天遇到一个题目,就是有俩个字符串,A和B,找出A中和B相同的字母,并删除,只对字母进行操作,具体题目如下:子函数实现 对于比较A和B字符串并删除A与B相同的字母,返回A的地址/****************************************************************…