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

2024-05-07 00:04

本文主要是介绍利用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()

这篇关于利用matplotlib和networkx绘制有向图[显示边的权重]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965762

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经