Matlab系列之绘图基础

  • 前言
  • 图形句柄与对象
  • 对象属性
    • 应用实例
    • 运行结果
  • 图形句柄的创建
    • 图形窗口对象
      • 实例程序
      • 运行效果
    • 坐标轴对象
      • 实例程序
      • 运行效果
    • 曲线对象
      • 实例程序
      • 运行效果
    • 文字对象
      • 实例程序
      • 运行效果
    • 曲面对象
      • 实例程序
      • 运行效果
  • 结束
  • 更多精彩,等你发现~

前言

这篇的东西相对比较细节和基础,花了比较多的时间来记录,望君好好看下去~

介绍下本篇文章将要介绍的东西吧,之所以把本篇称为图形基础,是因为本篇的内容更多的是对图形句柄、图形对象等等之类的相关知识进行说明,对于图形的绘制会在之后的篇章中再详细弄下,比如二维的图怎么画,三维的又该如何绘制;虽然本篇内容趋于基础性的知识,但这也只是相对于之后的图形绘制,是基础的东西。实际上,对于很多没有仔细学过MATLAB的人来说,对本篇将记录的内容其实都不曾注意,甚至不曾耳闻,所以本篇的重要性也是显然的,慢慢看吧~

图形句柄与对象

在介绍MATLAB函数的时候,有篇文章就讲到了函数句柄,不过那时候只是介绍了下函数句柄的使用,对句柄没做太深的了解,这个图形句柄的使用其实有点类似,可以将句柄赋给某个变量,然后直接调用该变量,就相当于调用了该句柄。

此外,对图形句柄再深入了解下,要知道MATLAB的图形/图像系统都是基于图形对象建立的,而图形对象拥有一个独立的名字,这名字就是句柄,独立且唯一,因此句柄是图形对象的唯一标识符,句柄值将可能是整数、实数或浮点数,不同对象会有不同的形式,比如图形窗口的句柄值就是一个正整数。

每个图形对象都会有它的属性,我们在对图形进行一些设置的时候,就是在对属性进行更改,比如改变线条的颜色,把线条用虚线表示等等,因此反过来说就是,修改图形属性,就可以实现改变图形的样式。


那么什么又是图形对象呢?

不知道大家对“面向对象编程”这句话是否有一定的理解,不懂的也没关系,我只是突然想起了这句话罢了,hhhhh~

图形对象是由图形命令产生的,图形中的线条、坐标轴、标题等等,都是一个独立的对象,然后对象又可以分为父对象和子对象的形式,如果创建了一个子对象,则该子对象有可能会继承父对象的大多数属性,当然也可能例外。如果同级别的子对象很多,那就把它们称作兄弟对象吧~

看个图形对象层次结构的图,从官网翻到的,具体如下:

从层次结构上来看,最高层次的图形对象属于根对象(Root),由于是系统自动创建的,所以句柄值为0,然后通过它实现屏幕的控制,即可以创建出一个图形窗口(Figure),要说明一点,在启动MATLAB时,根对象也伴随着创建完成,所以只有当MATLAB关闭了,根对象才会关闭。与根对象相关的属性是应用于所有MATLAB窗口的默认属性~

图形窗口(Figure)虽然在上图中只画了一个,但并不是说只能创建一个图形窗口,理论上可以无限~,实际上也可以有很多,多个图形窗口之间也是各自独立的,与之相关的属性有颜色、大小、排列等等。

再依次往下就是窗口内的对象了,功能基本上看它名字就知道了,比如Axes,这就是个坐标对象,UI Object就是一个创建用户图形界面的对象,其他的我就不一一详细介绍了。

举个例子把层次结构再表述下,例:使用 plot 函数创建线图。坐标区对象(坐标区是表示 x、y 和 z 坐标区标度、刻度线、刻度标签、坐标区标签等对象的单个对象)定义了表示数据的线条的参考框架。图窗是显示图形的窗口。图窗包含坐标区,坐标区包含线条、文本、图例以及其他用于表示图形的对象。


介绍完了图形句柄和图形对象,再了解几个MATLAB的函数,可用于获取已有图形、坐标轴以及其他对象的句柄,具体的使用,后面进行实例操作的时候直接看效果就好了,知道有这么个东西先。分别是gcf,gca和gco,各自的功能描述如下表:

函数名 功能
gcf 获取当前图形窗口的句柄
gca 获取当前坐标轴的句柄
gco 获取最近被点击的图形对象的句柄

对象属性

属性其实很好理解,可以当作是对象的特征,每个属性都有一个属性名和属性值,比如以曲线为对象,属性名为LineStyle,属性值则是属性名的取值,LineStyle的取值为点线、虚线或实线,即“-、:、-.、–”,此外还可以是“none”,这样就相当于不做显示了,这些取值将决定曲线的线型以何种形式组成;在属性名的写法中,不区分字母大小写,且可不必写全,并且要用单引号包起来进行表示,比如LineStyle,它就可以用 ‘lines’ 代替。

理解完属性名和属性值,接着就是要知道如何使用属性名以及属性值,当创建对象的时候,需要给对象赋予属性以及对应的属性值,如果没有设置,则使用默认值,如果创建完成后,需要重新设置属性,可使用set函数,调用格式如下:

set(图形句柄,属性名1,属性值1,属性名2,属性值2,....)

如果需要获知句柄的属性名以及属性值,可使用get函数,若未指定要获取的属性名,则会显示句柄的所有允许属性以及其属性值,调用格式如下:

get(图形句柄,属性名)

注:在使用的时候,属性名和属性值都记得用单引号包起来~

虽然不同的对象会有其特有的属性,但是也存在着共同的属性,即公共属性,常用的公共属性有:Children、Parent、Tag、Type、UseData、Visible、ButtonDownFcn、CreateFcn、DeleteFcn,相应的表述,见下表

属性名 属性值 描述
Children 向量 属性对象的子对象句柄所组成的一个向量
Parent 句柄值 属性对象的父对象的句柄
Tag 字符串 给对象定义一个标识符,使用findobj函数,则可以获取标识符所对应图形对象的句柄
Type 不可变 表示对象的类型
UseData 矩阵,默认为空矩阵 可存储与图形对象有关的数据
Visible on或off,默认on 决定图形窗口是否可见,不可与是否存在混淆
ButtonDownFcn 字符串 一般是某个M文件的名字或是一段程序,定义一块作用区域,单击后,MATLAB则会自动执行对应程序
CreateFcn 字符串 一般是某个M文件的名字或是一段程序,创建该对象时,MATLAB会自动执行对应程序
DeleteFcn 字符串 一般是某个M文件的名字或是一段程序,取消对象的适合,MATLAB会自动执行对应程序

应用实例

%功能 在同一个坐标中绘制两条曲线,曲线颜色分别为蓝色和绿色,获取绿色曲线的句柄,并对其进行线型设置
close all
clear
clc
x=0:pi/100:2*pi;%产生坐标横轴
y=sin(x);%第一条曲线的取值
z=cos(5*x);%第二条曲线的取值
plot(x,y,'b',x,z,'g');%同时绘制蓝绿两条曲线
hf=get(gca,'Children');%获取两条曲线的句柄
for k=1:size(hf)%进行循环搜索if get(hf(k),'Color')==[0 1 0]%[R,G,B] [0 1 0]则代表绿色hfg=hf(k);%获取绿色曲线句柄end
end
set(hfg,'LineStyle','-.');%设置绿曲线的线型

运行结果

图形句柄的创建

除去根对象是系统自动创建的,其他的所有图形对象都可以由与之同名的底层函数创建,所创建的对象会置于合适的父对象中,假若无父对象,MATLAB则会自动创建它;

例如用line函数画一条线,在画线之前,没有坐标轴和图形窗口,MATLAB则会创建这些对象,然后再画线,如果已经有这些对象了,就直接在当前窗口的坐标轴上画线,不影响其他已有的对象。

需要注意,底层函数和高层函数是完全不同,底层函数可以控制图形的每一个部分,而高层函数是直接对整个图形进行操作,属性都按缺省的进行设置,显然可以看出各自的好处,一个开发图形界面方便,一个实用性高。

创建对象的低层函数调用格式类似,重点在于要知道对象句柄的属性及其取值,在上面已经介绍了对象的公共属性,接下来将介绍一些常用图形句柄的创建方法及其特有的属性。

图形窗口对象

直接使用figure函数,就可以创建图形窗口对象,调用格式也很简单:

figure(属性名1,属性值1,属性名2,属性值2,...)

使用可以有以下的方式:

figure或句柄变量=figure

如果要关闭图形窗口,就使用close函数,格式:close(窗口句柄),如果要关闭全部就使用close all;如果只是要清除掉窗口中的内容,则可以使用clf命令。

图形窗口对象许多属性与其属性值控制着,除去前面讲到的公共属性外,还有Menubar、Name、NumberTitle、Resize、Position、Units、Color、Pointer、KeyPressFcn、WindowButtonDownFcn、WindowButtonMotionFcn、WindowButtonUpFcn等,这些属性就不具体进行描述了,都比较容易理解,想再详细了解其表述,可以在命令窗口输入命令:“doc Figure Properties”,双引号省略,然后在出现的界面进入第一个文档,即为figure的属性详细描述,查找的操作如下方的两个图所示


在此就简单表述下部分属性的作用,见下表

属性名 作用
Menubar 图形菜单栏显示
Name 图形的窗口标题
NumberTitle 窗口标题编号
Resize 窗口调整大小模式
Position 图形绘制区域的位置和大小
Units 测量单位
Color 窗口背景色
Pointer 指针符号
KeyPressFcn 用户按下按键时执行的回调函数
WindowButtonDownFcn 鼠标按下回调功能
WindowButtonMotionFcn 鼠标移动回调功能
WindowButtonUpFcn 鼠标释放回调函数

实例程序

close all
clear
hf=figure('numbertitle','off','name','DZKR的图形窗口','position',[500,500,666,666]);%position:[left bottom width height]
get(hf,'position')

运行效果

坐标轴对象

坐标轴的对象,可以用axes函数实现创建,调用格式和使用方法与figure的一样,

句柄变量=axes(属性名1,属性值1,属性名2,属性值2,....)

使用axes函数用指定的属性在当前图形窗口创建坐标轴,并将其句柄赋给句柄变量,直接axes,则按MATLAB默认的属性值在当前图形窗口创建坐标轴。

关于axes的属性,可在MATLAB命令行窗口输入:“doc Axes Properties”,然后进入出现的界面的第一个文档,就是该函数可用属性的描述了。依旧只讲部分个人觉得常用的几种,其余的就根据自己需要进行了解使用,部分表述见下表:

属性名 作用
XAxis、YAxis、ZAxis 控制X、Y和Z轴的特征和行为
XTick、YTick、ZTick 刻度值
XTickLabel、YTickLabel、ZTickLabel 刻度标签
XLabel、YLabel、ZLabel 坐标轴标签的文本对象
Title 坐标轴标题的文本对象

实例程序

close all
clear
clc
x=1:30;
plot(x,sin(x));%自动创建了axes对象
set(gca,'ytick',[-1 -0.5 0 0.5 1]);%只显示对应y值的刻度
set(gca,'yticklabel',{'low' -0.5 'zero' 0.5 'high'});%给刻度做标签名
set(get(gca,'xlabel'),'String','x轴');%坐标轴名
%set(get(gca,'ylabel'),'string','y轴');
ylabel('y轴');%也可直接使用函数
title('dzkr axes test');%标题名

运行效果

曲线对象

曲线对象的创建,使用line函数即可,调用格式:

句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,...)

直接line也可以实现曲线对象创建,其中x,y,z就是对应的维度,只使用x、y则是二维图,三者则为三维图,其他的也没啥好解释的,直接看下属性的查看方式,其内部的属性就不多做表述了,接下来的两个对象也是如此。

doc Primitive Line Properties

实例程序

close all
clear
clc
x=[-3:0.01:3]*pi;
y=sin(x);
Handle_y=line(x,y);
set(Handle_y,'color',[0.5 0.5 0],'linewidth',3,'linestyle','-.');

运行效果

文字对象

文字对象就是使用text函数,在指定的位置和属性值添加文字说明,在坐标轴对象那一部分的时候,其中一段代码:

set(get(gca,'xlabel'),'String','x轴');%坐标轴名

string就是text中的一个属性,也就是文字说明的字符串了,使用标准的ASCII字符,属性查询方式:

doc Text Properties

实例程序

close all
clear
clc
t=0:0.1:3*pi;
alpha=0:0.1:3*pi;
plot(t,sin(t),'r-');%绘制图1
hold on%保持图1的显示,否则会被替换为图2
plot(alpha,3*exp(-0.5*alpha),'b*');%绘制图2
xlabel('t');
ylabel('Mag');
title('\it{sine wave and {\itAe}^{-\alpha{\itt}} wave from 0 to 3\pi}');%\it为斜体 Interpreter 属性
text(7,sin(7),['\fontname {times} Value=',num2str(sin(6)),' at {\itt}=6\rightarrow\bullet'],'HorizontalAlignment','right');%在(7,sin(7)的位置定点,并用右箭头指出,从右到左的顺序
text(2,3*exp(-0.5*2),['\bullet\leftarrow\fontname {times} The{\it3e}^{-0.5\alpha} at {\alpha}=2'],'HorizontalAlignment','left');%在alpha=2的位置定点,并用左箭头指出,从左到右的顺序
legend('sin(t)','{\itAe}^{-\alphat}');%图例说明

运行效果

曲面对象

曲面对象用surface函数创建,调用格式:

句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2...);

mesh和surf函数可直接创建曲面图形,自动创建了曲面对象,曲面属性的查询方式

doc Primitive Surface Properties

实例程序

%绘制三维曲面z=sin(x)cos(y),并进行设置
close all
clear
clc
x=0:0.1:3*pi;
[x,y]=meshgrid(x);%生成矩阵坐标
z=sin(x).*cos(y);
axes('view',[-33,35]);%方位角和俯视角
hd=surface(x,y,z,'facecolor','w','edgecolor','flat');%绘图以及赋色
grid on%显示网格
xlabel('x axis');ylabel('y axis');zlabel('z axis');
title('mesh - surf');
set(hd,'facecolor','flat');%设置为统一色,可在此处设置断点查看未设置之前的结果,进行对比

运行效果

未运行最后一句代码

运行最后一句

结束

历时N天,左写写右写写,终于写完了这篇,真不容易,当然还是比较懒了点,不然应该较早些就能发出来了,内容总的来说,还是值得认真学习,不过关于属性的部分,并没有进行展开介绍,主要这玩意官方的解释很官方了,没必要花太多功夫讲,而且有些属性,很多时候基本上都没用上,所以根据自己需要进行对应的属性设置,不懂的doc就好了,help就直接help对应函数,也会有部分解释,接下来的绘图篇章,估计又要点时间了。。。


更多精彩,等你发现~


Matlab系列之绘图基础相关推荐

  1. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

    Matlab绘图基础--利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴) - 司徒鲜生 - 博客园 Matlab中axes函数解析_ljh0302的博客-CSDN博客_ ...

  2. MATLAB之绘图基础

    第7部分 MATLAB的绘图基础 1.二维图形绘制 (1)plot()函数 格式: plot(x)plot(x,y) 图形绘制函数plot(x)的格式说明 x内容 说明 实向量y 以y元素下标序号i为 ...

  3. MATLAB三维绘图基础meshgrid函数的用法解析

    MATLAB三维绘图基础meshgrid函数的用法解析   MATLAB中meshgrid函数是用来生成网格的,函数用法是:   [X,Y] = meshgrid(x,y);这种是最常用的一种用法.x ...

  4. 深度学习与计算机视觉系列(1)_基础介绍

    转载自: 深度学习与计算机视觉系列(1)_基础介绍 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/detail ...

  5. Matlab系列之二维图形(上)

    Matlab系列之二维图形(上) 简要 绘制基础 plot 文字标注 (1) 添加图形标题 (2)添加坐标轴标注 (3)图例 (4)文本注释 示例 程序 结果 线型.点型和颜色 坐标轴设置 示例 结果 ...

  6. Matlab系列之二维图形(下)

    Matlab系列之二维图形(下) 交互式绘图 ginput gtext zoom 双坐标轴绘图 两个特殊的绘图指令 fplot ezplot 特殊绘图指令 1)对数坐标轴指令 示例1 结果1(仔细看图 ...

  7. 基于matlab的绘图设计,matlab课程设计---利用MATLAB仿真软件进行绘图

    matlab课程设计---利用MATLAB仿真软件进行绘图 课程设计任务书课程设计任务书 题题 目目 利用利用 MATLABMATLAB 仿真软件进行绘图仿真软件进行绘图 初始条件初始条件 仿真软件 ...

  8. [Python]Matplotlib绘图基础

    1.简介 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 2.绘图基础 2.1 图表基本元素 图例和标题 x轴和y轴.刻度. ...

  9. Python数据分析学习系列 九 绘图和可视化

    Python数据分析学习系列 九 绘图和可视化 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 信息可视化 ...

最新文章

  1. matlab 绘图3
  2. 关于面向对象的的设计原则的使用
  3. .Net业务搭配实用技术栈
  4. 产品经理能力与职责表:你达标了几项?
  5. 隧道野蛮模式_点亮“隧道之光”将人心中照亮
  6. SAP UI5 CreateBindingContext 方法的实现逻辑
  7. Spring AOP注解方式实现
  8. php 数据库编码,php怎么设置数据库编码方式
  9. Android 应用开机自启和无需权限开启悬浮框
  10. JavaEE编码规范
  11. 11年写的一篇文章----智能终端安全现状及前景展望
  12. kettle查询mysql获取uuid_java中调用kettle转换文件
  13. hdu 1695GCD容斥
  14. 微信支付获取用户真实ip
  15. 北京大学ACM在线评测系统
  16. java ean13_【求大神指导】java实现EAN13条形码识别
  17. linux内核源码漫游,Linux内核源代码漫游
  18. IDC网络传输优化的罪与罚
  19. 使用Vue_cli搭建SPA项目
  20. html查询一张表,HTML5数据查询,表格显示功能代码教程

热门文章

  1. Shodan搜索信息的方法
  2. Could not load file or assembly 'System.Core, Version=2.0.5.0
  3. 热度高涨的Seek tiger,生态经济模型一览
  4. Unity学习笔记--赛车的控制代码
  5. 转速传感器信号隔离变送器正弦波输入方波信号输出
  6. JS中‘${}‘什么意思
  7. [51Nod 1816] 小C的二分图 口胡
  8. java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32,767 characters
  9. JAVA 蓝桥杯模拟 元音字母辅音字母的数量
  10. SQL case when then用法