matlab使用教程(70)—修改坐标区属性

1.控制坐标轴长度比率和数据单位长度

        您可以控制 x 轴、y 轴和 z 轴的相对长度(图框纵横比),也可以控制一个数据单位沿每个轴的相对长度(数据纵横比)。

1.1图框纵横比

        图框纵横比是 x 轴、y 轴和 z 轴的相对长度。默认情况下,图框纵横比基于图窗大小。您可以使用 pbaspect 函数更改纵横比。将纵横比设置为一个由正值组成的三元素向量,这些正值表示相对坐标轴长度。

        例如,绘制一个拉长的圆的图。然后设置图框纵横比,以使 x 轴是 y 轴和 z 轴(未显示)长度的两倍。

t = linspace(0,2*pi);
plot(sin(t),2*cos(t))
grid on
pbaspect([2 1 1])

        在三维视图中显示坐标区可查看 z 轴。

view(3)

        对于方形坐标区,请使用 [1 1 1]。此值类似于使用 axis square 命令。

t = linspace(0,2*pi);
plot(sin(t),2*cos(t))
grid on
pbaspect([1 1 1])

1.2数据纵横比

        数据纵横比是沿 x 轴、y 轴和 z 轴的数据单位的相对长度。使用 daspect 函数可以更改数据纵横比。将数据纵横比设置为一个由正值组成的三元素向量,这些正值表示沿每个轴的数据单位的相对长度。

        例如,设置此纵横比,以使沿 x 轴从 0 到 1 的长度等于沿 y 轴从 0 到 0.5 的长度和沿 z 轴(未显示) 0 到 2 的长度。

t = linspace(0,2*pi);
plot(sin(t),2*cos(t))
grid on
daspect([1 0.5 2])

        在三维视图中显示坐标区可查看 z 轴。

view(3)

        若要在所有方向采用相等的数据单位,请使用 [1 1 1]。此值类似于使用 axis equal 命令。方向的一个数据单位与 y 和 z 方向的一个数据单位长度相同。

t = linspace(0,2*pi);
plot(sin(t),2*cos(t))
grid on
daspect([1 1 1])

1.3还原为默认比率

        更改数据纵横比。然后使用 axis normal 命令还原为默认图框和数据纵横比。

t = linspace(0,2*pi);
plot(sin(t),2*cos(t))
grid on
daspect([1 1 1])
axis normal

2.控制坐标区布局

2.1与坐标区位置相关的属性

        Axes 对象拥有多项属性,可用于控制坐标区大小以及标题和轴标签在图窗中的布局。

  • OuterPosition - 坐标区的外边界,包括标题、标签和边距。以 [left bottom width height] 形式的向量指定此属性。left 和 bottom 值指示从图窗左下角到外边界左下角的距离。width 和 height 值指示外边界尺寸。

  • Position - 绘图所在的内坐标区的边界,不包括标题、标签和边距。以 [left bottom width height] 形式的向量指定此属性。

  • TightInset - 为 Position 属性值中的宽度和高度所添加的边距,指定为 [left bottom right top] 形式的向量。此属性是只读的。在添加轴标签和标题时,MATLAB® 会更新这些值以适应文本。Position 和 TightInset 属性所定义的边界大小包含所有图形文本。

  • ActivePositionProperty - Axes 对象的大小发生改变时保留下来的位置属性,指定为 'outerposition'(默认值)或 'position'

  • Units - 位置单位。单位必须设置为 'normalized'(默认值)以启用自动调整坐标区大小。当位置单位为长度单位(例如英寸或厘米)时,Axes 对象为固定大小。

2.2位置和边距的边界

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

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

2.3控制自动调整大小行为

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

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

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

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

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

figure; 
ax1 = axes('Position',[0.13 0.58 0.77 0.34]);
ax1.ActivePositionProperty = '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.ActivePositionProperty = 'position';
plot(ax2,1:10)
title(ax2,'Preserve Position')
yticklabels(ax2,{'My incredibly descriptive, excessively wordy, and overly long label',...
    'label 2','label 3'})

2.4伸展填充行为

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

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

        例如,以下图窗分别显示了同一绘图在启用和未启用“伸展填充”行为时的效果。点线显示由 Position 属性定义的可用空间。在两种情况中,数据纵横比、绘图框纵横比和照相机视角值是相同的。但是,在左侧绘图中,伸展造成了一定的扭曲。

启用伸展填充(一定的扭曲)禁用伸展填充(无扭曲)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第86题分隔链表

题目: 题解: class Solution { public:ListNode* partition(ListNode* head, int x) {ListNode* small new ListNode(0);ListNode* smallHead small;ListNode* large new ListNode(0);ListNode* largeHead large;while (head ! nullptr) {if (head-…

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

WPS表格:对比少于1万的两列数据

当我们需要对于A、B两列乱序的数据,找出A列中某一项B列有没有,或者找出B列中的某一项A列有没有,都可以先将这两列数据放入WPS表格中: 1.选中C列的第一行的单元格,在函数区输入函数 如果我们以A为基准,找A中…

HR4988内置转换器和过流保护的微特步进电机驱动芯片

描述 HR4988是一款内部集成了译码器的微特步进电机驱动器,能使双极步进电机以全、半、1/4、1/8、1/16步进模式工作。步进模式由逻辑输入管脚MSx选择。其输出驱动能力达到32V和2A。 译码器是HR4988易于使用的关键。通过STEP管脚输入一个脉冲就可以使电机完成一次步进…

软件工程期末复习(4)

软件过程 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 ISO 9000对过程的定义: 使用资源将输入转化为输出的活动所构成的系统。 瀑布模型: 瀑布模型的特点: 阶段间具有顺序性和依赖性 必须…

Docker和Kubernetes之间的关系

Docker和Kubernetes在容器化生态系统中各自扮演着不同的角色 它们之间是互补的,而不是替代关系。 Docker是一个开源的容器化平台,它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,并确保这些容器可以在任何Docker环境中一致地…

Embedding技术学习

可能很多人并没有关注Embedding技术,但实际上它是GPT非常重要的基础,准备的说,它是GPT模型中理解语言/语义的基础。 【解释什么是Embedding】 对于客观世界,人类通过各种文化产品来表达,比如:语言&#x…

GIAT: 蛋白质结构预测的新利器

瑞典Karolinska研究院在瑞典政府赞助下由Ben Murrell等研究团队在AlphaFold 3最新报告后提出这篇论文提出了一种非常有趣和创新的方法来生成蛋白质骨架结构,称为生成式不变角度转换器(GIAT)。与现有的主要基于扩散模型和流匹配的方法不同,GIAT采用了类似于大型语言模型(如GPT)中…

06-Fortran基础--Fortran模块化编程

06-Fortran基础--Fortran模块化编程 1 模块的定义和使用2 接口和模块间通信3 模块化编程的优势:4 模块使用示例5 结语 Fortran的模块化编程是一种组织和管理代码的方法,它包括模块的定义和使用、接口和模块间通信以及模块化编程的优势。 1 模块的定义和…

【35分钟掌握金融风控策略24】定额策略实战

目录 基于客户风险评级的定额策略 确定托底额度和盖帽额度 确定基础额度 基于客户风险评级确定风险系数 计算最终授信额度 确定授信有效期 基于客户风险评级的定额策略 在开发定额策略时,精准确定客户的基础额度是一个关键步骤,通常会基于客户的收…

基于地平线J6E,「吃蟹者」易航智能重塑高速NOA

作者 |张祥威 编辑 |德新 一批基于地平线J6E的智驾方案将要到来,高速NOA领域很快会变天。 易航智能是这批智驾方案公司中的一家。 近日在北京车展,这家公司推出一套基于地平线J6 E的7V1R方案,可以实现城市记忆领航、高速NOA、记忆泊车、L2…

数据结构---经典链表OJ

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…

C++八股(面试题、手撕题)自用版

目录 面试题: 1. define inline 在编译的哪个阶段 2. const static 3. 子函数返回结构体有什么问题,返回对象调用了哪些函数 4. volatile关键字 5. 编译器基本原理 6. 预处理、编译、汇编、链接以及他们在操作系统上如何运作的 7. 数组和指针&a…

19、案例实战:上亿请求轻松应对,老年代垃圾回收参数调整技巧大公开

19.1、前文回顾 在上一篇文章中,我们已经向大家介绍了一个日活跃用户百万级别,处理请求量上亿的电商系统案例。我们选择了这个中型电商系统在大促期间的瞬时高峰下单场景,作为我们的JVM优化分析的场景。通过预测,我们得出在大促高峰期,每台机器每秒需要处理300个订单请求…

LINUX 入门 7

LINUX 入门 7 day10 20240506 耗时:59min day11 20240507 耗时:106min 课程链接地址 第7章 http客户端请求 1 http项目介绍与Http协议讲解 先去看一遍教程 扫一遍,不用完全一行行读 ctrlshiftI调出来网页调试台——network——img 过…

PC的体系结构

冯诺依曼体系结构 冯诺依曼体系结构,也称为冯诺依曼架构,是一种计算机架构的设计概念,由20世纪中叶的数学家和物理学家约翰冯诺依曼提出。这种架构的核心特点是将程序指令和数据存储在同一块可读写的存储器中。这样做的优点是简化了计算机的…

web前端之纯CSS实现简单酷炫的照片墙效果、排除元素的伪类、scale

MENU 效果htmlstylescale:not() 效果 html <div class"container"><div class"box"><img src"../../image/1_.jpg"></div><div class"box"><img src"../../image/2_.jpg"></div>…

AI办公自动化-用kimi把PDF文档按照章节自动拆分成多个docx文档

一个PDF文档很长&#xff0c;希望按照章节分拆成小文档。 可以在kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写拆分PDF文档的Python脚本的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;D:\chatgpt图书\图书1&…

Zookeeper 注册中心:单机部署

序言 本文给大家介绍 Zookeeper 单机部署流程、 如何与 Spring 整合使用。除此之外&#xff0c;还有 Zookeeper 作为注册中心与 SpringCloud 的整合流程。 一、部署流程 官网下载 Zookeeper 安装包 解压安装包到指定目录 进入 apache-zookeeper-3.8.4-bin/conf 目录&…

LwIP 之九 详解 UDP RAW 编程、示例、API 源码、数据流

我们最为熟知的网络通信程序接口应该是 Socket。LwIP 自然也提供了 Socket 编程接口,不过,LwIP 的 Socket 编程接口都是使用最底层的接口来实现的。我们这里要学习的 UDP RAW 编程则是指的直接使用 LwIP 的最底层 UDP 接口来直接实现应用层功能。这里先来一张图,对 LwIP 内部…