MATLAB数据可视化快速入门:科研经验分享

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 ●


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空