【科研经验】如何快速上手MATLAB数据可视化(二)

快速上手MATLAB数据可视化(二)

【科研经验】如何快速上手MATLAB数据可视化(二)的图1

复杂绘图技巧与实战

【科研经验】如何快速上手MATLAB数据可视化(二)的图2

图形的句柄操作和属性设置



【科研经验】如何快速上手MATLAB数据可视化(二)的图3



01


导语



  

      在快速上手MATLAB数据可视化(一)中,我们主要介绍如何快速应用MATLAB常见的散点图二维图三维图曲面图基本函数进行绘图,以及如何通过配色方案设置与手动设置标签技巧达到高质量期刊图像的可视化效果。


【科研经验】如何快速上手MATLAB数据可视化(二)的图4

      而相比于其他图形界面化绘图软件,MATLAB最大的优势在于可以通过脚本编程的方式对图像界面的句柄和属性进行高效率复杂操作。因此,本讲主要介绍图形绘制界面的句柄操作和属性设置技巧,并通过一个具体复杂绘图实例进行实战。



02


图形的句柄操作和属性设置




什么是句柄与属性 

      MATLAB图形窗口由不同的对象(如坐标轴、曲线、曲面或文字等)组成图形界面。MATLAB给每个图形对象分配一个标识符,称为句柄,给每个对象的每一个属性分配一个名字,称为属性名,而属性名的取值称为属性值。通过该句柄对该图形对象的属性进行设置,同时亦可获取相关的属性值,从而实现复杂的图形绘制。

常用图形对象的句柄函数 


gcf   

当前图形的句柄 


fig = gcf

       返回当前图形的句柄。如果图形不存在,则 gcf 将创建一个图形并返回其句柄。可以使用图形句柄查询和修改图形的属性。

【科研经验】如何快速上手MATLAB数据可视化(二)的图5

surf(peaks)fig = gcf; 

% 获取当前图形句柄

fig.Color = [0 0.5 0.5];

% 设置背景颜色

fig.ToolBar = 'none';

% 取消工具栏显示


gca   

当前坐标轴或图句柄


ax = gca

       返回当前图形的当前坐标轴或图,这通常是最后创建的图形或用鼠标点击的最后一个图形。图形函数(例如 title)的目标为当前坐标轴或图。

【科研经验】如何快速上手MATLAB数据可视化(二)的图6

figure

x = linspace(0,10);

y = sin(4*x);

plot(x,y);


ax = gca; 

% 获取当前坐标轴句柄

ax.FontSize = 12; 

% 设置文字大小

ax.TickDir = 'out'; 

% 设置刻度向外

ax.TickLength = [0.02 0.02];

%设置刻度长度

ax.YLim = [-2 2]; 

% 设置坐标轴范围

常用属性操作函数 


set   

设置图形对象属性


set(H,Name,Value) 

        为 H 标识的对象指定其 Name 属性的值。

set(H,NameArray,ValueArray) 

       使用元胞数组 NameArray 和 ValueArray 指定多个属性值。

【科研经验】如何快速上手MATLAB数据可视化(二)的图7

       将三个不同针状序列的 Marker 和 Tag 属性设置为不同值。

       值元胞数组的每一行对应于 h 中的一个对象且包含两个值,一个对应于 Marker 属性,一个对应于 Tag 属性。

x = 0:30;
y = [1.5*cos(x); 4*exp(-.1*x).*cos(x); exp(.05*x).*cos(x)]';
S = stem(x,y);
NameArray = {'Marker','Tag'};
ValueArray = {'o','Decaying Exponential';...
  'square','Growing Exponential';...
  '*','Steady State'};
set(S,NameArray,ValueArray)


get   

查询图形对象属性


v = get(h) 

      返回 h 标识的图形对象的所有属性和属性值。

v = get(h,propertyName) 

      返回特定属性 propertyName 的值。

【科研经验】如何快速上手MATLAB数据可视化(二)的图8
【科研经验】如何快速上手MATLAB数据可视化(二)的图9

p = plot(1:10);

get(p)

       在实际绘图中,通过配合set和get函数的使用,实现对不同对象属性的设置和读取。



03


复杂绘图实战



      下面以同一坐标轴下多曲线绘制为例的脚本进行实战说明:

%%读取数据

load data


%%创建图形窗口并指定可绘制区域的位置和大小

figure('Position', [100 100 600 475]);

hold on;


%%根据数据绘制曲线

%%拟合曲线

lineFit   = line(xdata_fit  , ydata_fit   );      

%%测量曲线误差棒图

Measument     = errorbar(xdata_m, ydata_m, ydata_s);  

%%验证数据曲线

Data  = line(xVdata, yVdata );    

%%数据模型曲线1 

Model = line(xmodel, ymodel );

%%置信区间曲线1

hCI(1) = line(xmodel, ymodelL);

%%置信区间曲线2

hCI(2) = line(xmodel, ymodelU);


%设置图像标题和横纵坐标轴名称

Title  = title ('Graphics title');

XLabel = xlabel('xlabel (unit)');

YLabel = ylabel('ylabel (unit)');


%图表中显示拟合函数关系式

Text   = text(5, 800, ...

  sprintf('\\it{y = y(x)}'));


%%设置图例特性

hLegend = legend( ...

  [Measument, lineFit, Data, Model, hCI(1)], ...

  'Data (\mu \pm \sigma)' , ...

  'Fit (\it{C x^3+b x^2})'      , ...

  'Data'       , ...

  'Model (\it{C x^3})'    , ...

  'Interval Estimation'                , ...

  'location', 'NorthWest' );


%%设置字体、字符大小

set( gca                       , ...

    'FontName'   , 'Helvetica' );

set([Title, XLabel, YLabel, Text], ...

    'FontName'   , 'AvantGarde');

set([hLegend, gca]             , ...

    'FontSize'   , 8           );

set([XLabel, YLabel, Text]  , ...

    'FontSize'   , 10          );

set( Title                    , ...

    'FontSize'   , 12          , ...

    'FontWeight' , 'bold'      );


%设置每组曲线的颜色、类型、标记点、线宽等

set(lineFit                          , ...

  'Color'           , [0 .5 0]    );

set(Measument                            , ...

  'LineStyle'       , 'none'      , ...

  'Marker'          , '.'         , ...

  'Color'           , [.5 .5 .5]  );

set(Data                         , ...

  'LineStyle'       , 'none'      , ...

  'Marker'          , '.'         );

set(Model                        , ...

  'LineStyle'       , '--'        , ...

  'Color'           , 'r'         );

set(hCI(1)                        , ...

  'LineStyle'       , '-.'        , ...

  'Color'           , [0 0 0.5]    );

set(hCI(2)                        , ...

  'LineStyle'       , '-.'        , ...

  'Color'           , [0 0 0.5]    );

set(lineFit                          , ...

  'LineWidth'       , 2           );

set(Measument                            , ...

  'LineWidth'       , 1.5           , ...

  'Marker'          , 'o'         , ...

  'MarkerSize'      , 6           , ...

  'MarkerEdgeColor' , [.3 .3 .3]  , ...

  'MarkerFaceColor' , [.7 .7 .7]  );

set(Data                         , ...

  'Marker'          , 'o'         , ...

  'MarkerSize'      , 5           , ...

  'MarkerEdgeColor' , 'none'      , ...

  'MarkerFaceColor' , [.6 .6 1] );

set(Model                        , ...

  'LineWidth'       , 2         );

set(hCI(1)                        , ...

  'LineWidth'       , 2         );

set(hCI(2)                        , ...

  'LineWidth'       , 2         );


%%设置窗口窗格情况

set(gca, ...

  'Box'         , 'off'     , ...

  'TickDir'     , 'out'     , ...

  'TickLength'  , [.02 .02] , ...

  'XMinorTick'  , 'on'      , ...

  'YMinorTick'  , 'on'      , ...

  'YGrid'       , 'on'      , ...

  'XColor'      , [.25 .25 .25], ...

  'YColor'      , [.25 .25 .25], ...

  'YTick'       , 0:500:2500, ...

  'LineWidth'   , 1         );


【科研经验】如何快速上手MATLAB数据可视化(二)的图10



04


小结



      

      本讲主要介绍图形绘制界面的句柄操作和属性设置函数,主要包括gcf、gca图形图像句柄函数,以及set、get的属性设置和读取函数,并通过一个具体的复杂绘图实例进行实战演示。



END 


【科研经验】如何快速上手MATLAB数据可视化(二)的图11



                         作者:张开宇(北京理工大学)


相关链接:

【科研经验】快速上手MATLAB数据可视化(一)

【科普系列】利用PPT作图增强科技论文表达力

【科普系列】如何利用3ds MAX画两个半径不同的球体

【科研经验】3D MAX快速入门-简单基本体构建反应机理图

【科研经验】如何用PPT画简单示意图

【科研经验】2020版Origin作图技巧分享

【科研经验】使用ppt画出反应机理示意图



【科研经验】如何快速上手MATLAB数据可视化(二)的图12

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1
1