032_Tiledlayout_in_Matlab中的分块图布局

在这里插入图片描述

贴砖多图新方式

从R2019b开始,MATLAB提供了新的贴砖多图方式,可以更加方便的绘制多个子图。

这个功能由以下函数构成:

  • tiledlayout
  • nexttile
  • tilenum
  • tilerowcol

tiledlayoutTiledChartLayout对象

tiledlayout函数用于创建一个贴砖布局,它对应于一个TiledChartLayout对象。调用语法有以下几种。

tiledlayout(m,n)
tiledlayout(arrangement)
tiledlayout(___,Name,Value)
tiledlayout(parent,___)
t = tiledlayout(___)

分别对应的是:

  • mn:行数和列数,创建一个固定的行列布局
  • arrangement:自动调节布局方式,可以是"flow""vertical""horizontal",新增加的行列数会根据子图的大小自动调整
  • 设置Name-Value对,可以设置"Padding""TileSpacing""TileWidth""TileHeight"等属性
  • parent:指定父级对象
  • t:返回一个TiledChartLayout对象

nexttile函数

nexttile函数用于在贴砖布局中创建下一个子图,调用语法有以下几种。

nexttile
nexttile(span)
nexttile(tilelocation)
nexttile(tilelocation,span)
nexttile(parent_tiledlayout, ___)
ax = nexttile(___)

这个函数在TiledChartLayout对象上调用,返回一个Axes对象。这个对应的坐标轴对象可以用于绘图,并且会被设定为当前坐标轴,a.k.a.,gca返回这个坐标系,a.k.a.,可以直接调用plot等函数进行绘图。

  • nexttile:在下一个位置创建一个子图
  • nexttile(span):在下一个位置创建一个子图,占据span描述的区域,span是一个二元向量,分别表示行数和列数
  • nexttile(tilelocation):在指定位置创建/更新一个子图,tilelocation是一个数字,表示位置(按顺序数过来)
  • nexttile(tilelocation,span):在指定位置创建/更新一个子图,占据span描述的区域
  • nexttile(parent_tiledlayout, ___):可以使用前面所有的语法,但是设定父级对象,一般而言,总是在图窗中查找父级对象,当把TiledChartLayout对象放在其他容器中时,需要指定父级对象
  • ax = nexttile(___):返回之前创建的Axes对象,可以使用前面所有的语法调用

另外,有一个很没有一致性的地方,tilelocation是从左上角开始数的,行先的方式;并且还可以设定为"east""west""north""south"等方位,分别表示东西南北的网格外层的图块……此时,我的表情是……

在这里插入图片描述

t = tiledlayout(2,2);t.Title.String = 'Shared Title';
t.Subtitle.String = 'Shared Subtitle';
t.XLabel.String = 'Shared X-axis';
t.YLabel.String = 'Shared Y-axis';nexttile
plot(1:10, rand(1,10));
title('1st Tile');nexttile
plot(1:10, rand(1,10));
title('2nd Tile');nexttile
plot(1:10, rand(1,10));
title('3rd Tile');nexttile
plot(1:10, rand(1,10));
title('4th Tile');nexttile('east')
plot(1:10, rand(1,10));
title('East');nexttile('south')
plot(1:10, rand(1,10));
title('South');nexttile('west')
plot(1:10, rand(1,10));
title('West');nexttile('north')
plot(1:10, rand(1,10));
title('North');

tilenumtilerowcol函数

这两个函数就是用来获取当前的行列数和位置的转换。

[m, n] = deal(3, 4);
t = tiledlayout(m, n);for i = 1:tilenum(t, m, n)nexttile[row, col] = tilerowcol(t, i);plot(1:10, rand(1,10));title(['T' num2str(i), '-(', num2str(row), ',', num2str(col), ')']);
endt.Title.String = sprintf('%d,', tilenum(t, [1 1 1 1 2 2 2 2 3 3 3 3], [1 2 3 4 1 2 3 4 1 2 3 4]));

在这里插入图片描述

行列布局

采取tiledlayout(m,n)的方式创建一个行列布局,然后使用nexttile函数来创建子图。

与其他一般的图形中会使用字符串来设置标签不同,这里的标题(Title),副标题(Subtitle),X轴标签(XLabel),Y轴标签(YLabel)等属性都是直接设置为Text对象。而且这几个对象都是整个布局共享的。示例如下。

确定图形周围空白大小和图块间距的两个参数分别是:

  • Padding:图形周围的空白大小,'loose', compact, 'tight',默认是'loose'
  • TileSpacing:图块间距,'loose', 'compact', 'tight', 'none',默认是'loose'
t = tiledlayout(2, 2);t.TileSpacing = 'tight';
t.Padding = 'compact';t.Title.String = 'Random samples';
t.XLabel.String = 'Random Count';
t.YLabel.String = 'Random Value';
t.Subtitle.String = '4 independent random samples';nexttile
stem(1:10, rand(1, 10));nexttile
stem(1:10, rand(1, 10));nexttile
stem(1:10, rand(1, 10));nexttile
stem(1:10, rand(1, 10));

在这里插入图片描述

流式、单行、单列布局

采用tiledlayout("arrangement")的方式创建一个流式布局,然后使用nexttile函数来创建子图。这里的"arrangement"可以是"flow""vertical""horizontal",新增加的行列数会根据子图的大小自动调整。

注意,在这种情况下,可以采用命令的方式来调用:

tiledlayout flownexttile
plot(1:10, rand(1, 10));

在这里插入图片描述

增加一个新的图。

tiledlayout flownexttile
plot(1:10, rand(1, 10));nexttile
plot(1:10, rand(1, 10));

在这里插入图片描述

再增加一个新的图。

tiledlayout flownexttile
plot(1:10, rand(1, 10));nexttile
plot(1:10, rand(1, 10));nexttile
plot(1:10, rand(1, 10));

在这里插入图片描述

观察这里的布局方式,流式布局总是试图维持大概的长宽比例来适应子图的大小。

相应的,垂直布局和水平布局也很好理解。

下面试试,行列布局的嵌套。

t = tiledlayout('vertical');t2 = tiledlayout(t, 'horizontal');nexttile(t)
plot(1:10, rand(1, 10));nexttile(t)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));

在这里插入图片描述

或者是这样嵌套。

这里建立一个嵌套的列之后,显式地指定了在父布局中的位置。
其中Layout.Tile属性指定了位置,第二个位置;Layout.TileSpan则指定了相应区域大小,也就是这里的两列。

最终结果是这样的。

t = tiledlayout('horizontal');nexttile(t)plot(1:10, rand(1, 10));t2 = tiledlayout(t, 'vertical');
t2.Layout.Tile = 2;
t2.Layout.TileSpan = [1 2];nexttile(t)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));nexttile(t2)
plot(1:10, rand(1, 10));

在这里插入图片描述

地理图+极坐标系

可以看到,nexttile只是占了一个位置,实际的坐标系是可以自由设置的。

下面给出一个地理图和极坐标系的例子。

titleX = matlab.graphics.layout.Text(String="标题不能胡说",Color='blue');
subtitleX = matlab.graphics.layout.Text(String="更不能细说",Color='red');tiledlayout(1,2, Title=titleX, Subtitle=subtitleX);% Display geographic plot
nexttile
geoplot([22.6 24.9 30.5 39.1 41.9],[113.6  120.6 120.5 117.2 123.6],'r-*')% Display polar plot
nexttile
theta = pi/4:pi/4:2*pi;
rho = [19 6 12 18 16 11 15 15];
polarscatter(theta,rho)

在这里插入图片描述

总结

这个方式比之前的subplot函数更加灵活,可以更加方便的绘制多个子图。但是,这个功能在R2019b之后才有,所以需要注意版本的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/221.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 事件阻止 e.preventDefault();click.prevent

Vue 事件阻止 Vue 事件阻止 e.preventDefault(); click.prevent修饰符

华为荣耀曲面屏手机下面空白部分设置颜色的方法

荣耀部分机型下面有一块空白区域&#xff0c;如下图红框部分 设置这部分的颜色需要在themes.xml里面设置navigationBarColor属性 <item name"android:navigationBarColor">android:color/white</item>

ELK之路第四步——整合!打通任督二脉

ELK之路第四步——整合&#xff01;打通任督二脉 前言1.架构2.下载资源3.整合开始1.分别启动三个es2.启动kibana3.新建filebeat_logstash.yml配置文件4.修改logstash的启动配置文件5.启动logstash6.启动filebeat7.Kibana查看 4.结语 前言 在开始本篇之前&#xff0c;你需要用到…

openEuler操作系统介绍

openEuler是一款开源、免费的操作系统&#xff0c;由openEuler社区运作。当前openEuler内核源于Linux&#xff0c;支持鲲鹏及其它多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff0c;是由全球开源贡献者构建的高效、稳定、安全的开源操作系统&#xff0c;适用于数据…

恋爱脑学Rust之Box与RC的对比

在遥远的某个小镇&#xff0c;住着一对年轻的恋人&#xff1a;阿丽和小明。他们的爱情故事就像 Rust 中的 Rc 和 Box 智能指针那样&#xff0c;有着各自不同的「所有权」和「共享」的理解。 故事背景 阿丽和小明准备共同养一株非常珍贵的花&#xff08;我们称之为“心之花”&…

大数据-197 数据挖掘 机器学习理论 - scikit-learn 泛化能力 交叉验证

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

数据结构-复杂度

从本期开始,我们将开始数据结构的学习&#xff0c;我会定期将我学习的内容这里上传到博客中&#xff0c;欢迎大家和我一起学习&#xff01; 一、什么是数据结构和算法 1.1 数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种…

Kubernetes中的secrets存储

华子目录 2.secrets2.1secrets功能介绍2.2secrets的创建2.2.1从文件创建2.2.2编写yaml文件 2.3secret的使用案例2.3.1将secret挂载到volume中2.3.2设置子目录映射secret密钥2.3.3将secret设置为环境变量2.3.4存储docker register的认证信息spec.imagePullSecrets[] 2.secrets …

Java已死,大模型才是未来?

作者&#xff1a;不惑_ 引言 在数字技术的浪潮中&#xff0c;编程语言始终扮演着至关重要的角色。Java&#xff0c;自1995年诞生以来&#xff0c;便以其跨平台的特性和丰富的生态系统&#xff0c;成为了全球范围内开发者们最为青睐的编程语言之一 然而&#xff0c;随着技术的…

利用EasyExcel实现简易Excel导出

目标 通过注解形式完成对一个方法返回值的通用导出功能 工程搭建 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

Java项目实战II基于Spring Boot的文理医院预约挂号系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在医疗资源日益紧张的背景下&#xff0…

Mac下载 安装MIMIC-IV 3.0数据集

参考blog MIMIC IV 3.0数据库安装方法_mimic数据下载-CSDN博客 MIMIC IV数据库安装&#xff08;二&#xff09;_mimic数据库安装-CSDN博客 MIMIC-IV3.0安装_mimic iv 3.0-CSDN博客 MIMIC-IV-v2.0安装教程_mimic iv 安装教程-CSDN博客 MIMIC IV 3.0数据库安装方法或者思路&…

[ 应急响应靶场实战 ] VMware 搭建win server 2012应急响应靶机 攻击者获取服务器权限上传恶意病毒 防守方人员应急响应并溯源

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

UI 组件的二次封装

UI 组件的二次封装是指&#xff0c;在基础 UI 库的组件上进行自定义封装&#xff0c;以实现更贴合业务需求的功能和样式。通过二次封装&#xff0c;可以增强组件的复用性、便捷性和一致性&#xff0c;简化业务代码&#xff0c;同时降低后续维护成本。 1. 二次封装的原理 二次…

Redis高级篇之缓存一致性详细教程

文章目录 0 前言1.缓存双写一致性的理解1.1 缓存按照操作来分 2. 数据库和缓存一致性的几种更新策略2.1 可以停机的情况2.2 我们讨论4种更新策略2.3 解决方案 总结 0 前言 缓存一致性问题在工作中绝对没办法回避的问题&#xff0c;比如&#xff1a;在实际开发过程中&#xff0c…

python爬虫实现自动获取论文GB 7714引用

在写中文论文、本硕博毕业设计的时候要求非常严格的引用格式——GB 7714引用。对于普通学生来说都是在google scholar上获取&#xff0c;一个一个输入点击很麻烦&#xff0c;就想使用python完成这个自动化流程&#xff0c;实现批量的倒入论文标题&#xff0c;导出引用。 正常引…

redis v6.0.16 安装 基于Ubuntu 22.04

redis安装 基于Ubuntu 22.04 本文演示如何在ubuntu22.04下&#xff0c;安装redis v6.0.16&#xff0c;并配置测试远程访问。 Step1 更新环境 sudo apt updateStep2 安装redis sudo apt install redis-server -yStep3 启动 sudo systemctl restart redissudo systemctl sta…

✨基于python实现的文档管理系统✨

本项目是使用Django和layui实现的一个文档转换系统&#xff0c;支持各种文档的相互转换 &#x1f4c4; PPT转Word &#x1f4d1; PDF转Word &#x1f4da; 合并PDF &#x1f4dc; Word转PDF 系统支持用户注册、登录&#xff0c;还能管理你的转换任务&#xff1a; &#x1f504;…

ES索引:索引管理

索引管理 再讲索引&#xff08;Index&#xff09;前&#xff0c;我们先对照下 ElasticSearch Vs 关系型数据库&#xff1a; PUT /customer/_doc/1 {"name": "DLBOY" }系统默认是自动创建索引的 如果我们需要对这个建立索引的过程做更多的控制&#xff1a…

Linux安装Dcoker

目录 1、卸载&#xff08;可选&#xff09; 2、安装docker 3、启动docker 4、配置镜像加速 1、卸载&#xff08;可选&#xff09; 如果之前安装过旧版本的Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \…