当前位置: 首页 > news >正文

MATLAB更改图论的布局:设置layout

在图论那一章,我们讲过最小生成树和单源最短路径(见:从零开始学数学建模):

图片

图片

以最短路径那节课为例,把绘图p=plot那部分代码写为:

% plot绘图有很多参数可以设置,使图尽量美观
P = plot(G,'EdgeLabel',G.Edges.Weight, ...'EdgeFontSize',18,'EdgeFontAngle','normal',...'layout','force',...'EdgeColor','b', ...'NodeFontSize',12, ...'LineWidth',4, ...'NodeFontSize',24, ...'ArrowSize',16);

得到的输出图(不同matlab版本有差异,但整体布局相同,且计算结果相同,都是节点1到3到6):

图片

绘制该图形时,代码中设置'layout','force'意味着设定布局(layout)为力导向算法计算布局(force),整体呈现较为均衡的分布(轮廓五边形)。图中标红的路径即为最短路径(1,3,6)。

而如果把布局更改下(只需要把'layout'后面参数'force'改成'layered',其他都不变):

P = plot(G,'EdgeLabel',G.Edges.Weight, ...'EdgeFontSize',18,'EdgeFontAngle','normal',...'layout','layered', ...'EdgeColor','b', ...'NodeFontSize',12, ...'LineWidth',4, ...'NodeFontSize',24, ...'ArrowSize',16);

得到的输出图:

图片

代码中设置'layout','layered'意味着布局设定为分层布局,图节点置于多层中。而在此基础上,可修改其布局方向,只需在代码中加上'Direction','right',即可把布局方向改为向右:

图片

注意无论哪种布局,其表示的所求出的最短路径都是(1,3,6)是不会变的。

总之在图论中绘制图像时,设定好'layout'以及相关参数,可以改变其布局等从而选择最合适的。可以设定的选项包括下表中,其中'force'和''layered'就是前面讲的。

选项描述特定于布局的名称-值对组
'auto'(默认值)

根据图的大小和结构自动选择布局方法。

'circle'

圆形布局。将图节点放置在以原点为中心、半径为 1 的圆形上。

'Center' - 圆形布局的中心节点

'force'

力导向图布局。在相邻节点之间使用引力,在远距离节点之间使用斥力。

'Iterations' - 力导向图布局迭代次数

'WeightEffect' - 边权重对布局的影响效果

'UseGravity' - 多分量布局的引力切换

'XStart' - 节点的起始 x 坐标

'YStart' - 节点的起始 y 坐标

'layered'

分层布局。将图节点置于多层中,表示层级结构。默认情况下是逐层向下的(有向无环图的箭头向下)。

'Direction' - 层的方向

'Sources' - 第一层包含的节点

'Sinks' - 最后一层包含的节点

'AssignLayers' - 层分配方法

'subspace'

子空间嵌入式布局。在高维嵌入式子空间中绘制图节点,然后将位置投影回二维。默认情况下,子空间维度是 100 或节点总数(以两者中较小者为准)。

'Dimension' - 嵌入式子空间的维度

'force3'三维力导向图布局。

'Iterations' - 力导向图布局迭代次数

'WeightEffect' - 边权重对布局的影响效果

'UseGravity' - 多分量布局的引力切换

'XStart' - 节点的起始 x 坐标

'YStart' - 节点的起始 y 坐标

'ZStart' - 节点的起始 z 坐标

'subspace3'三维子空间嵌入式布局。

'Dimension' - 嵌入式子空间的维度

 更多数模文章:

想参加数学建模比赛,但什么都不会,该怎么学呢?

一图速览全年16场数学建模竞赛!

从零开始学数学建模

DeepSeek教你用DeepSeek做数学建模

建模手/论文手/编程手,分别该怎么学数学建模?

数模用MATLAB还是python?

http://www.lryc.cn/news/539124.html

相关文章:

  • 【分果果——DP(困难)】
  • 禁止WPS强制打开PDF文件
  • 罗技鼠标接收器丢了,怎么用另一个logi接收器重新配对?
  • ffmpeg configure 研究2:分析屏幕输出及文件输出的具体过程
  • 软件内有离线模型,效果也很实用......
  • Linux下ioctl的应用
  • 如何通过 prometheus-operator 实现服务发现
  • 认识HTML的标签结构
  • MySQL 之INDEX 索引(Index Index of MySQL)
  • 基于flask+vue的租房信息可视化系统
  • 开源Web主机控制面板ISPConfig配置DNS
  • 【Python项目】信息安全领域中语义搜索引擎系统
  • 网站搭建基本流程
  • mysql 存储空间增大解决方案
  • 深入解析队列与广度优先搜索(BFS)的算法思想:原理、实现与应用
  • Swap to Gather-----
  • 使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(自动化篇)
  • Python 函数式编程全攻略:从理论到实战的深度解析
  • Ollama 在 LangChain 中的使用
  • 使用apt-rdepends制作软件离线deb安装包
  • 根据POD名称生成 三部曲:get、describe、log、exec
  • SQL sever数据导入导出实验
  • python环境的yolov11.rknn物体检测
  • I2C、SPI、UART
  • 如何监控和优化 MySQL 中的慢 SQL
  • 13-二叉树最小深度-深度优先(DFS)
  • 51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)
  • 代码补全『三重奏』:EverEdit如何用上下文识别+语法感知+智能片段重构你的编码效率!
  • 电脑系统损坏,备份文件
  • Token Statistics Transformer:线性注意力革命,重新定义Transformer效率天花板