专栏首页matlab爱好者MATLAB快速入门----处理图形对象

MATLAB快速入门----处理图形对象

处理图形对象

图形对象

图形对象是用于显示图形的基本元素。这些对象按层次结构组织,如下图所示。

当调用绘图函数时,MATLAB® 使用各种图形对象(例如,图窗窗口、轴、线条、文本等)创建图形。每个对象都具有一组固定的属性,您可以使用这些属性控制图形的行为和外观。

例如,以下语句使用变量 y 中的数据创建条形图,并设置关于条形显示方式的属性:

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'FaceColor','green','EdgeColor','black','LineWidth',1.5)

常见图形对象

当调用函数以便创建图形时,MATLAB会创建图形对象的层次结构。例如,调用 plot 函数会创建下列图形对象:

· 图窗 - 包含轴、工具栏、菜单等的窗口。

· 轴 - 包含表示数据的对象的坐标系

· 线条 - 代表传递至 plot 函数的数据值的线条。

· 文本 - 用于轴刻度线和可选标题及注释的标签。

不同类型的图形使用不同对象来表示数据。由于存在许多种图形,因此也存在许多数据对象类型。其中一些用于一般用途,例如线条和矩形,还有一些是用于高度专业的用途,例如误差条、颜色栏和图例。

访问对象属性

绘图函数可返回用于创建图形的对象。例如,以下语句将创建一个图形并返回由 plot 函数创建的线条对象:

x = 1:10;
y = x.^3;
h = plot(x,y);
使用 h 来设置线条对象的属性。例如,设置它的 Color 属性。
h.Color = 'red';
此外,也可以在调用绘图函数时指定线条属性。
h = plot(x,y,'Color','red');
可以查询线条属性以便查看当前值:
h.LineWidth
ans =
        0.5000

查找对象的属性

要查看对象的属性,请输入:

get(h)

MATLAB 将返回包含对象属性及当前值的列表。

要查看对象属性及可能的值信息,请输入:

set(h)

设置对象属性

可使用 set 函数一次设置多个属性。

设置现有对象的属性

要对多个对象的同一属性设置相同值,请使用 set 函数。

例如,下面的语句绘制一个 5×5矩阵(创建五个线条对象,每列各一个),然后将 Marker 属性设置为正方形,并将 MarkerFaceColor 属性设置为绿色。

y = magic(5);
h = plot(y);
set(h,'Marker','s','MarkerFaceColor','g')

在本示例中,h 是一个包含五个句柄的向量,图形中的每个线条(共五个)各一个句柄。set 语句将所有线条的 Marker 和 MarkerFaceColor 属性设置为相同值。

要对一个对象设置属性值,请对句柄数组建立索引:

h(1).LineWidth = 2;

设置多个属性值

如果要将每个线条的属性设置为不同值,您可以使用元胞数组存储所有数据,并将其传递给 set 命令。例如,创建绘图并保存线条句柄:

figure
y = magic(5);
h = plot(y);

假定您要为每个线条添加不同标记,并使标记的面颜色与线条的颜色相同。您需要定义两个元胞数组,一个包含属性名,另一个包含属性所需的值。

prop_name 元胞数组包含两个元素:
prop_name(1) = {'Marker'};
prop_name(2) = {'MarkerFaceColor'};
prop_values 元胞数组包含 10 个值:Marker 属性有 5 个值,MarkerFaceColor 属性有 5 个值。请注意,prop_values 是一个二维元胞数组。第一个维表示值应用于 h 中的哪个句柄,第二个维表示值分配给哪个属性:
prop_values(1,1) = {'s'};
prop_values(1,2) = {h(1).Color};
prop_values(2,1) = {'d'};
prop_values(2,2) = {h(2).Color};
prop_values(3,1) = {'o'};
prop_values(3,2) = {h(3).Color};
prop_values(4,1) = {'p'};
prop_values(4,2) = {h(4).Color};
prop_values(5,1) = {'h'};
prop_values(5,2) = {h(5).Color};
MarkerFaceColor 始终分配到相应线条的颜色的值(通过获取线条 Color 属性获得)。
定义元胞数组之后,调用 set 以便指定新属性值:
set(h,prop_name,prop_values)

用于处理对象的函数

此表列出了处理对象时常用的函数。

函数

用途

allchild

查找指定对象的所有子级。

ancestor

查找图形对象的父级。

copyobj

复制图形对象。

delete

删除对象。

findall

查找所有图形对象(包括隐藏句柄)。

findobj

查找具有指定属性值的对象的句柄。

gca

返回当前轴的句柄。

gcf

返回当前图窗的句柄。

gco

返回当前对象的句柄。

get

查询对象的属性的值。

ishandle

如果值是有效对象句柄,则为 True。

set

设置对象的属性的值。

传递参数

可定义专用绘图函数以简化自定义图形的创建过程。通过定义函数,可以像 MATLAB 绘图函数一样传递参数。

下面的示例显示了一个MATLAB 函数,该函数在输入参数 x 指定的范围中计算数学表达式,然后绘制结果。第二次调用 plot 函数会将结果的 mean 值绘制为红线。

该函数基于计算值修改 y 轴刻度。加入轴标签和标题后,即完成了图形自定义。

function plotFunc(x)
   y = 1.5*cos(x) +6*exp(-.1*x) + exp(.07*x).*sin(3*x);
   ym = mean(y);
   hfig = figure('Name','Function andMean');
   hax = axes('Parent',hfig);
   plot(hax,x,y)
   hold on
   plot(hax,[min(x)max(x)],[ym ym],'Color','red')
   hold off
   ylab =hax.YTick;
   new_ylab =sort([ylab, ym]);
   hax.YTick =new_ylab;
   title ('y = 1.5cos(x) + 6e^{-0.1x} + e^{0.07x}sin(3x)')
   xlabel('X Axis')
   ylabel('Y Axis')
end
定义输入参数的值,并调用此函数。
x = -10:.005:40;
plotFunc(x)

查找现有对象的句柄

findobj 函数可用于通过搜索具有特定属性值的对象来获取图形对象的句柄。使用 findobj,您可以指定任何属性组合的值,这样可以方便地从多个对象中选取一个对象。此外,findobj 还可识别正则表达式。

查找特定类型的所有对象

由于所有对象都具有标识对象类型的 Type 属性,因此可以查找特定对象类型的所有匹配项的句柄。例如,

h = findobj('Type','patch');

查找所有补片对象的句柄。

查找具有特定属性的对象

您可以指定多个属性以便缩小搜索范围。例如,

plot(rand(5),'r:')
h = findobj('Type','line','Color','r','LineStyle',':');

查找所有红色点线的句柄。

h =
  5x1 Line array:
  Line
  Line
  Line
  Line
  Line

限制搜索范围

通过将起始图窗或轴的句柄作为传递的第一个参数,您可以在对象层次结构中指定起点。例如,

h = findobj(gca,'Type','text','String','\pi/2');

仅在当前坐标区中查找 π/2。

本期内容根据MATLAB官方文档修改而来,供大家学习, 在此特别感谢MATLAB官网

本文分享自微信公众号 - matlab爱好者(matlabaihaozhe),作者:matlab爱好者

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • matlab绘图(改)(三)

    感谢大家关注matlab爱好者公众号,今天给大家介绍matlab文本标注属性及set命令。在聊天栏中输入“011”、“文本”或“属性”即可快速获取本文章。在浏览...

    艾木樨
  • 科研小助手推荐 第五期

    感谢关注matlab爱好者公众号!如果公众号文章对您有帮助,别忘了点击分享和“在看”哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言!

    艾木樨
  • matlab与Excel数据共享

    5、在“加载宏”中点击“浏览”,在matlab的安装目录下找到并打开toolbox;

    艾木樨
  • matlab GUI基础1

    GUI编程开发 1.句柄图形 是一种面向对象的绘图系统。这些细节一般隐藏在图形M文件的内部,用户通过句柄图形可以定制图形的许多特性,这是使用高级绘图函数无法实现...

    anytao
  • linux内核的冷热页分配器

    先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的...

    233333
  • Worksheet工作表对象基础

    大家好,前面介绍了最常用的单元格Range对象,本节开始介绍Worksheet工作表对象的相关内容(基础内容已有涉及),后续会再分别介绍它的属性、方法以及事件等...

    无言之月
  • Java--类和对象之句柄、作用域

    SuperHeroes
  • 解读Neo4j全新的Python驱动程序

    尽管Neo4j社区目前已发布了Java、Python、JavaScript和.NET官方支持的驱动程序,但其发展并未停步。本周,Neo4j发布驱动程序py2ne...

    CSDN技术头条
  • 紧急公告:Android系统webview控件接口存安全隐患

    日前,谷歌旗下Android系统爆出webview控件存在接口安全隐患,会令绝大部分使用Andorid系统为核心的设备沦为黑客的“玩物”。目前,包括...

    安恒信息
  • Java程序员的日常—— 《编程思想》关于类的使用常识

    Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题。世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的...

    用户1154259

扫码关注云+社区

领取腾讯云代金券