matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数

        有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。

函数或属性描述

OuterPosition 属性

使用此属性可以查询或更改坐标区的外边界,包括标题、标签和边距。要更改外边界,请将此属性指定为 [left bottom width height] 形式的向量。left 和 bottom 值指示从图窗左下角到外边界左下角的距离。width 和 height 值指示外边界尺寸。

Position 属性

使用此属性可以查询或更改绘图区域,此区域通常由图框限定。此区域不包括标题、标签以及标题和标签周围的边距。要更改绘图区域的大小,请将此属性指定为 [left bottom width height] 形式的向量。

tightPosition 函数 (自 R2022b 起)

使用此函数可以查询绘图区域,此区域通常由图框限定。对于具有约束纵横比的坐标区(如方形坐标区、极坐标区或包含图像的坐标区),该函数通常能返回比 Position 属性更准确的大小和位置信息。

TightInset 属性

使用此属性可以查询包含标题、刻度标签和轴标签在内的图框周围的边距。在添加轴标签和标题时,MATLAB® 会更新此属性以适应文本。Position 和 TightInset 属性所定义的边界大小包含所有文本标签。

PositionConstraint 属性 (自 R2020a 起)

使用此属性可以查询或控制在添加标题或标签时是保留绘图区域(坐标区内)还是保留坐标区的外边界。要更改保留坐标区的哪些区域,请将此属性指定为 "innerposition" 或 "outerposition"

Units 属性

使用此属性可以查询或更改坐标区位置值的单位。值必须设置为 "normalized"(默认值)以启用自动调整坐标区大小。

axis 函数

使用此函数可调整坐标区范围或纵横比,而无需执行计算或设置特定属性。例如:

  • axis image - 更改图框的大小以适应图像。

  • axis padded - 在可视化(例如,绘制的线)和图框之间添加填充边距。

2.位置和边距的边界

        下图显示了一个二维视图,其中 OuterPosition 值定义红色区域、Position 值定义蓝色区域,以及基于 Position 外扩 TightInset 值所定义的品红色区域。

2-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

        下图显示了一个三维视图,同样包含了由 OuterPosition 值定义的坐标区外边界区域(红色)、Position 值定义的坐标区内边界区域(蓝色),以及在 Position 内边界基础上外扩 TightInset 值所定义的坐标区区域(品红色)。

3-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

3.方形或具有约束纵横比坐标区的位置

        自 R2022b 起如果坐标区具有约束纵横比,例如,如果您正在绘制一个图像,Position 属性和 tightPosition 函数返回不同结果。根据您要创建的演示内容的类型,使用其中一项。

        例如,显示图像。使用 axis 函数保留图像的纵横比。

figure
C = imread("ngc6543a.jpg");
ax = axes;
image(C)
axis image

        通过调用 tightPosition 函数获得位置向量。使用向量在当前显示在坐标区中的图像周围绘制红色矩形。

tpos = tightPosition(ax);
annotation("rectangle",tpos,Color="red",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function

        通过查询坐标区的 Position 属性获得另一个位置向量。使用向量绘制一个蓝色矩形,该矩形定义类似大小的图像的绘图区域,但具有默认纵横比。当显示一系列具有不同纵横比的多个图像时,该向量中的值对查询整个图像区域可能会有所帮助。

pos = ax.Position;
annotation("rectangle",pos,Color="blue",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function. A blue rectangle is drawn around the area defined by the Position property. The red rectangle coincides with the perimeter of the plot box. The area returned by the Position property has more space on the left and right sides of the image.

4.控制自动调整大小行为

        某些情况可能触发 Axes 对象自动调整大小。例如,以交互方式调整图窗大小或添加标题或轴标签将激活自动调整大小。有时,新坐标区的大小无法同时满足 Position 和 OuterPosition 值,这种情况下需要使用 PositionConstraint 属性来指示要保留哪个值。

        将 PositionConstraint 属性指定为下列值之一:

  • "outerposition" - 保留 OuterPosition 值。如果不希望坐标区或任何周围文本超出特定外边界,可使用此选项。MATLAB 会调整坐标区内部区域大小(显示绘图时),以尽力在外边界范围内适应内容。

  • "innerposition" - 保留 InnerPosition 值。如果希望坐标区的内部区域在图窗中保持特定大小,可使用此选项。此选项有时会导致文本溢出图窗。

        在 R2020a 之前: 使用 ActivePositionProperty 和值 "outerposition" 或 "position"

        通常,将 PositionConstraint 属性设置为 "outerposition" 更可取。但是,坐标区标题或标签过长可能会使坐标区内部区域大大缩小,文字过小而难于阅读。在这种情况下,最好保持特定大小的内部坐标区,即使周围文本溢出了图窗也应如此。

        例如,创建一个带有两个坐标区的图窗,并为每个坐标区位置指定相同的宽度和高度。对于上坐标区,将 PositionConstraint 属性设置为 "outerposition",对于下坐标区则设置为 "innerposition"。注意,在上坐标区中,内部区域会缩小以适应文本,但文本不会溢出图窗。在下坐标区中,会保留内部区域的大小,但部分文本被截断。

figure; 
ax1 = axes("Position",[0.13 0.58 0.77 0.34]);
ax1.PositionConstraint = "outerposition";
plot(ax1,1:10)
title(ax1,"Preserve OuterPosition")
yticklabels(ax1,["My incredibly descriptive, excessively wordy, and overly long label",..."label 2","label 3"])ax2 = axes("Position",[0.13 0.11 0.77 0.34]);
ax2.PositionConstraint = "innerposition";
plot(ax2,1:10)
title(ax2,"Preserve Position")
yticklabels(ax2,["My incredibly descriptive, excessively wordy, and overly long label",..."label 2","label 3"])

Two axes that are vertically stacked. The upper axes has a long y-axis label, and the plot box has shrunk to accommodate the long string of text. In the lower axes, the y-axis label is clipped to preserve the size of the plot box.

5.伸展填充行为

        默认情况下,MATLAB 会伸展坐标区以填充可用的空间。这种“伸展填充”行为可能会导致部分扭曲。坐标区可能与其 DataAspectRatioPlotBoxAspectRatio 和 CameraViewAngle 属性中存储的数据纵横比、图框纵横比和相机视角值不完全匹配。Axes 对象的 DataAspectRatioModePlotBoxAspectRatioMode 和 CameraViewAngleMode 属性设置为 "auto" 时,会启用“伸展填充”行为。

        如果您指定数据纵横比、绘图框纵横比或相机视角,则会禁用“伸展填充”行为。如果禁用“伸展填充”行为,MATLAB 会使坐标区在可用空间内尽可能大并严格遵循属性值,不会出现扭曲。

        例如,以下图窗分别显示了同一绘图在启用和未启用“伸展填充”行为时的效果。在两种情况中,数据纵横比、绘图框纵横比和相机视角值是相同的。但是,在左侧绘图中,伸展造成了一定的变形。

启用伸展填充(一定的变形)禁用伸展填充(无变形)

Plot of a circle stretched to fill the plot box, which is rectangular. Tthe circle displays as an oval.

Plot of a circle without any distortion

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

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

相关文章

制造企业数据管理:从数据到价值的转化

在数字化浪潮席卷全球的今天,制造企业面临着前所未有的机遇与挑战。如何从海量的数据中提取有价值的信息,将其转化为企业的核心竞争力,成为了每一个制造企业必须面对的问题。而数据管理,正是实现这一转化的关键所在。制造企业数据…

618值得入手的数码好物如何选?热门爆款数码好物清单分享

618购物节即将到来,作为年中最重要的购物狂欢盛会之一,各大电商平台将推出众多优惠活动。如果你正准备购买数码产品,那么不要错过这个机会。在本文中,我们将为你介绍几款值得关注的热门数码产品,帮助你在618购物节中做…

从丢失到找回:手机相册恢复实战教程

“之前因为手机延迟把三千多张相片都删了,花了几个小时找文档,最后也没找到。对于爱拍照的朋友来说,照片被误删或不见真的会超级难过!请问大家有什么好方法能够恢复照片吗?” 在数字时代,手机相册成为了我…

AI作画算法详解:原理、应用与未来发展

随着人工智能技术的不断发展,AI作画逐渐成为了一个热门话题。AI作画,即利用人工智能算法生成绘画作品,不仅仅是技术的展示,更是艺术与科技结合的创新体现。本文将深入探讨AI作画的核心算法原理,并通过实例帮助读者更好…

《海峡科技与产业》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《海峡科技与产业》期刊是什么级别? 答:国家级 主管单位:中华人民共和国科学技术部 主办单位:科技部海峡两岸科学技术交流中心 问:《海峡科技与产业》影响因子? 答:…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 学习了函数后,老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数: 1.strlen函数 用于获取字符串长度(不包括末尾…

Python 渗透测试:反弹 shell (反弹 后门 || 程序免杀)

什么叫 反弹 shell 反弹 shell (Reverse Shell) 是一种常见的渗透测试技术,它指的是受害者主机主动连接攻击者的主机,从而让攻击者获得对受害者主机的控制权。在一个典型的反弹 shell 攻击中,攻击者会在自己的主机上监听一个特定的端口,然后诱使目标主机主动连接到这个端口。当…

Vue3实战笔记(22)—路由Vue-Router 实战指南(路由传参)

文章目录 前言一、路由router-link二、路由传参1.query方式2.params方式3.props传参 总结 前言 vue-router 是 Vue.js 官方路由管理器。它和 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得易如反掌。 前面提到过简单的使用路由,直到上文使用404界面…

【找到所有数组中消失的数字】leetcode,python

很菜的写法: class Solution:def findDisappearedNumbers(self, nums: List[int]) -> List[int]:nlen(nums)#存1-Nnum_1[i for i in range(1,n1)]#预存数num_2[]nums.sort()for i in nums:num_1[i-1]0for i in num_1:if i!0:num_2.append(i)return num_2能过但是…

使用可接受gitlab参数的插件配置webhook

jenkins配置 安装Generic Webhook Trigger 配置远程触发令牌 勾选Print post content和Print contributed variables用于打印值 配置gitlab 选择新增webhook 配置webhook http://JENKINS_URL/generic-webhook-trigger/invoke,将JENKINS_URL修改成自己的jenkins地址 先保存…

基于网络爬虫技术的网络新闻分析(二)

目录 2 系统需求分析 2.1 系统需求概述 2.2 系统需求分析 2.2.1 系统功能要求 2.2.2 系统IPO图 2.2 系统非功能性需求分析 3 系统概要设计 3.1 设计约束 3.1.1 需求约束 3.1.2 设计策略 3.1.3 技术实现 3.3 模块结构 3.3.1 模块结构图 3.3.2 系统层次图 3.3.3…

C++笔试强训day24

目录 1.判断是不是平衡⼆叉树 2.最大子矩阵 3.小葱的01串 1.判断是不是平衡⼆叉树 链接 简单递归即可。 class Solution { public:// 高度int hight(TreeNode* pRoot){if (pRoot nullptr)return 0;int l hight(pRoot->left);int r hight(pRoot->right);return max…

电子邮箱是什么?付费电子邮箱和免费电子邮箱有什么区别?

注册电子邮箱前,有付费电子邮箱和免费电子邮箱两类选择。付费的电子邮箱和免费的电子邮箱有什么区别呢?区别主要在于存储空间、功能丰富度和售后服务等方面,本文将为您详细介绍。 一、电子邮箱是什么? 电子邮箱就是线上的邮局&a…

用友GRP-U8 bx_dj_check.jsp SQL注入漏洞复现(XVE-2024-10537)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

2024年,诺基亚手机发售仅一天就售罄

在智能手机越来越同质化的今天,各家都只卷性能和相机,大火的 AI 对于咱来说好像实用性又不太大,机圈属实整的有点儿无聊。 不过在阿红这两天上网冲浪的时候,一个陌生又熟悉的名字闯入了我的视线,——诺基亚&#xff08…

ubuntu中如何删除常规匹配不到的乱码目录文件

原因是之前误操作创建了多个带空格的gerrit仓库的时候导致的服务器乱码,进入geriit服务器可以查看到如下的一个异常目录,常规rm -rf 操作的时候是匹配不到这个目录的。 这时候我们应该考虑使用inode的性质来匹配删除。 注:在Linux文件系统中…

如何在WordPress中启用两因素身份验证?

在WordPress中启用两因素身份验证方法:安装和激活WordFence安全性、启用两因素验证。 使用您可以从任何位置登录的任何门户,建议启用两个因素身份验证以增加帐户的安全性。 这样,即使有人可以正确猜测你的密码,它们仍然需要获得2…

【if条件、for循环、数据框连接、表达矩阵画箱线图】

编程能力,就是解决问题的能力,也是变优秀的能力 From 生物技能树 R语言基础第七节 文章目录 1.长脚本管理方式if(F){....}分成多个脚本,每个脚本最后保存Rdata,下一个脚本开头清空再加载 2.实战项目的组织方式方法(一&…

卷轴分红商城模式:适用于多种的商业营销模式

卷轴分红商城模式是一种基于区块链技术的去中心化积分商城系统,通过智能合约和数字资产分红实现积分流通和价值回馈,适用于多种场景。 什么是卷轴分红商城模式: 这是一个去中心化的积分商城系统,消费者在商城消费时,可…

Blender 导入资源包的例子

先到清华源下载资源包: Index of /blender/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 具体地址:https://mirrors.tuna.tsinghua.edu.cn/blender/demo/asset-bundles/human-base-meshes/human-base-meshes-bundle-v1.1.0.zip 解压/hum…