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

使用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.mzph.cn/news/832404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中标签的ref属性

组合API-ref属性 在vue2.x中,可以通过给元素添加refxxx属性,然后在代码中通过this.$refs.xxx获取到对应的元素 然而在vue3中时没有$refs这个东西的,因此vue3中通过ref属性获取元素就不能按照vue2的方式来获取。 目标:掌握使用re…

ModuleNotFoundError: No module named ‘pkg_resources‘ 问题如何解决?

ModuleNotFoundError: No module named pkg_resources 通常是因为 Python 环境中缺少 setuptools 模块。pkg_resources 是 setuptools 包的一部分,用于处理 Python 包的发行和资源。 为解决这个问题,请按照以下步骤操作: 确保 setuptools 已…

压缩png图片大小怎么操作?试试这招一键压缩图片体积

png图片是一种无损压缩格式,体积也会比其他格式的图片要大。但是,我们在使用的过程中遇到需要给png图片压缩体积的情况时要怎么办呢?很简单,只需要使用png压缩大小(https://www.yasuotu.com/png)网站-压缩图…

UE5 体积云

写好的体积材质放这里面 效果如上 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_4"Begin Object Class/Script/Engine.MaterialExpressionVectorParameter Name"MaterialExpressionVectorParameter_0"End ObjectBegin O…

欢乐钓鱼大师脚本,游戏托管一键操作!

欢迎来到《钓鱼大师乐趣无穷》!这里是一片充满了乐趣和挑战的钓鱼天地。不论你是刚刚入门的小白,还是已经成为老手的大神,本攻略将为你揭示如何在游戏中获得成功,并针对稀有鱼类的钓鱼技巧进行详细介绍。 一、初探钓鱼的乐趣 在《…

低功耗UPF设计的经典案列分享

案例1 分享个例子,景芯A72低功耗设计,DBG domain的isolation为何用VDDS_maia_noncpu供电而不是TOP的VDD? 答:因为dbg的上一级是noncpu,noncpu下面分成dbg和两个tbnk。 案例2 景芯A72的低功耗,请问&#…

RabbitMQ是怎么做消息分发的?——Java全栈知识(14)

RabbitMQ是怎么做消息分发的? RabbitMQ 的消息分发分为五种模式:分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。 1、简单模式 publisher 直接发送消息到队列消费者监听并处理队列中的消息 简单模式是最基本的工作模式,…

数据仓库基础理论(学习笔记)

数据仓库基础理论 1.数据仓库概念 2.数据仓库为何而来 3.数据仓库主要特征 4.OLTP、OLAP系统 5.数据仓库与数据库的区别 6.数据仓库与数据集市的区别 7.数据仓库分层架构 7.1为什么要分层? 8.ETL、ELT

爱普生S2D13V52快速实现车载显示屏高分辨率显示系统

随着时代的发展,汽车驾驶位前中央的显示屏承担的功能也越来越多,从一开始仅仅是显示仪表盘的信息,再到作为显示屏辅助倒车,再到如今和一块平板一样可公认娱乐,显示屏的大小有些时候成为了一辆车够不够好的体现。随着汽…

【网络安全】记一场完整实战SRC漏洞挖掘(超详细)全过程

前言 记录一次完整的某SRC漏洞挖掘实战,为期一个多星期。文章有点长,请耐心看完,记录了完整的SRC漏洞挖掘实战 渗透过程 因为选择的幸运儿没有对测试范围进行规划,所以此次范围就是没有范围。 先上主域名看一眼,看…

Error: error:0308010C:digital envelope routines::unsupported 问题如何解决

Error: error:0308010C:digital envelope routines::unsupported 通常与 Node.js 的加密库中对某些加密算法的支持有关。这个错误可能是因为 Node.js 的版本与某些依赖库不兼容导致的。特别是在 Node.js 17 版本中,默认使用 OpenSSL 3,而一些旧的加密方式…

银行卡实名认证API接口快速对接

银行卡实名认证API接口又叫银行卡核验类API接口、银行卡验证类API接口、银联核验类API接口,根据入参字段不同,分银行卡二要素验证API接口,银行卡三要素验证API接口,银行卡四要素验证API接口。其中,银行卡二要素验证API接口是验证开…

BEV下统一的多传感器融合框架 - FUTR3D

BEV下统一的多传感器融合框架 - FUTR3D 引言 在自动驾驶汽车或者移动机器人上,通常会配备许多种传感器,比如:光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同,如RGB图像,点云等,不同模态…

TypeError报错处理

哈喽,大家好,我是木头左! 一、Python中的TypeError简介 这个错误通常表示在方法调用时,参数类型不正确,或者在对字符串进行格式化操作时,提供的变量与预期不符。 二、错误的源头:字符串格式化…

动力电池热管理方案介绍与发展方向

摘要 随着电动汽车的快速发展,高性能的动力电池系统成为推动电动汽车产业发展的重要因素。然而,伴随着能量密度提高和放电深度增加,电池热管理问题逐渐凸显。良好的热管理方案能够提高电池的寿命,保障电池性能,延长电…

【C语言刷题系列】移除元素

目录 一、问题描述 二、解题思路 三、源代码 个人主页: 倔强的石头的博客 系列专栏 :C语言指南 C语言刷题系列 一、问题描述 二、解题思路 在C语言中,原地移除数组中所有等于特定值的元素并返回新长度的问题可以通过双指针法…

Linux:进程信号(一)信号的产生

目录 一、信号是什么? 二、Linux信号 三、信号处理方式 四、信号的产生 1、 通过终端按键产生信号 2、调用系统函数向进程发信号 3、 硬件异常产生信号 一、信号是什么? 在生活中,有许多信号,比如红绿灯,下课铃声…

后缀字串排序

直接sort: #include <iostream> #include <cstring> #include <algorithm> #include <vector>using namespace std;int main() {string str;cin >> str;int len str.size();vector<string> strings;for(int i 0; i < len; i){strin…

文件删了,回收站清空了怎么恢复?文件恢复软件一览

在日常生活和工作中&#xff0c;我们常常会遇到误删除文件的情况&#xff0c;有时甚至会因为清空了回收站而无法找回这些文件。这些文件可能包含重要的工作数据、个人照片或其他珍贵的回忆。那么&#xff0c;在这种情况下&#xff0c;我们该如何恢复这些被删除且清空回收站的文…

【数字图像处理笔记】Matlab实现图像平滑算法 均值-中值-高斯滤波 (三)

&#x1f48c; 所属专栏&#xff1a;【数字图像处理笔记】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x…