【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)



快速上手MATLAB數(shù)據(jù)可視化(三)

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖1

善用優(yōu)秀繪圖工具箱

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖2

你不可不知的繪圖工具箱



【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖3



01


導(dǎo)語




       在快速上手MATLAB數(shù)據(jù)可視化(二)中,我們主要介紹圖形繪制界面的句柄操作和屬性設(shè)置函數(shù),主要包括gcf、gca圖形圖像句柄函數(shù),以及set、get的屬性設(shè)置和讀取函數(shù),并通過一個(gè)具體的復(fù)雜繪圖實(shí)例進(jìn)行實(shí)戰(zhàn)演示。

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖4

       通過上一講的實(shí)例,不難發(fā)現(xiàn),若想繪制高質(zhì)量的科研發(fā)表圖,需要調(diào)用大量函數(shù)和指令對原始圖像進(jìn)行優(yōu)化調(diào)整,從而讓每次繪圖變得極為繁瑣和困難。

       那有什么辦法可以實(shí)現(xiàn)更快速更便捷的優(yōu)化呢?

       這里拋磚引玉給出兩種方案。

       方案A將你常用的優(yōu)化策略編寫成一個(gè)函數(shù)或腳本,每次繪制后直接調(diào)用。如:將上一講中關(guān)于圖像窗口布局、字體優(yōu)化等通用內(nèi)容寫到一個(gè)函數(shù)中。

function ImgOptimize

%customize a plot to make them publication quality in MATLAB

%%設(shè)置窗口窗格情況

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         );

end

       方案B:利用別人封裝好函數(shù)、工具箱等進(jìn)行優(yōu)化,從而達(dá)到事半功倍的效果。正所謂,他山之石,可以攻玉。

       兩個(gè)方案比較來說,

       方案A靈活度更高,操作相對復(fù)雜。更適合有一定MATLAB編程經(jīng)驗(yàn),希望根據(jù)個(gè)人或團(tuán)隊(duì)風(fēng)格定制化繪圖風(fēng)格的同學(xué)。

       方案B操作更簡單,容易上手,能在較短時(shí)間內(nèi)獲得較佳的高質(zhì)量發(fā)表圖,適合希望借助MATLAB實(shí)現(xiàn)快速繪圖的同學(xué)。

由于我們這里主要介紹MATLAB的快速應(yīng)用,因此本講主要以方案B為主線,介紹MATLAB自帶的繪圖函數(shù)庫MATLAB Plot Gallery以及兩款你不可不知的優(yōu)秀繪圖工具PlotPub與Gramm



02


MATLAB Plot Gallery



      MATLAB軟件本身就提供大量繪圖函數(shù),可以滿足數(shù)據(jù)可視化的基本需求。為了方便大家更直觀地選擇和使用相關(guān)函數(shù),MATLAB Plot Gallery提供了許多在MATLAB中可視化數(shù)據(jù)方式的示例。每一個(gè)實(shí)例都可以查看和下載源代碼,并應(yīng)用在自己的MATLAB程序中。

      所以,大家可以先試著去MATLAB Plot Gallery看看有沒有自己心儀的數(shù)據(jù)表示方式,然后根據(jù)示例進(jìn)行修改即可快速繪圖。


附上鏈接:

https://ww2.mathworks.cn/products/matlab/plot-gallery.html

(可能需要注冊與登錄mathworks賬號)

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖5

(可點(diǎn)擊圖片放大觀看)


03


PlotPub工具箱



      一個(gè)復(fù)雜高質(zhì)量的科學(xué)發(fā)表圖需要調(diào)用大量的set與get函數(shù)對布局、字體、線寬、顏色等細(xì)節(jié)進(jìn)行調(diào)整。那是否可以用面向?qū)ο蟮木幊趟枷牒皖惖慕Y(jié)構(gòu)對這些細(xì)節(jié)進(jìn)行整合呢?

      當(dāng)然可以,PlotPub正是基于這樣的想法應(yīng)運(yùn)而生。

      在實(shí)際應(yīng)用時(shí),只需要利用addpath函數(shù)將PlotPub對應(yīng)的函數(shù)庫導(dǎo)入即可。

如:addpath('../lib');


附上鏈接:

https://github.com/masumhabib/PlotPub

應(yīng)用實(shí)例效果 


快速設(shè)置顏色、線寬和坐標(biāo)軸


       以三組不同相位的50Hz的正弦電壓信號為例,進(jìn)行應(yīng)用:

%% load PlotPub lib

clear all;

addpath('../lib');


%% lets plot 3 cycles of 50Hz AC voltage

f = 50;

Vm = 10;

phi = pi/4;


% generate the signal

t = [0:0.0001:3/f];

th = 2*pi*f*t;

v1 = Vm*sin(th);

v2 = Vm*sin(th - phi);

v3 = Vm*sin(th - phi*2);


figure;

plot(t*1E3, v1);

hold on;

plot(t*1E3, v2);

plot(t*1E3, v3);

hold off;

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖6

原始數(shù)據(jù)繪制圖

      下面開始利用PlotPub進(jìn)行調(diào)整:

%% Change properties

plt = Plot();

plt.XLabel = 'Time, t (ms)'; % xlabel

plt.YLabel = 'Voltage, V (V)'; %ylabel

plt.YTick = [-10, 0, 10]; %[tick1, tick2, .. ]

plt.XLim = [0, 80]; % [min, max]

plt.YLim = [-11, 11]; % [min, max]


plt.Colors = { % three colors for three data set

    [ 1,      0,       0]

    [ 0.25,   0.25,    0.25]

    [ 0,      0,       1]

    };


plt.LineWidth = [2, 2, 2]; % three line widths

plt.LineStyle = {'-', ':', '--'}; % three line styles

plt.Legend = {'\theta = 0^o', '\theta = 45^o', '\theta = 90^o'}; % legends


% Save

plt.export('plotMultiple2.png'); 

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖7

調(diào)整后的結(jié)果

       相比于傳統(tǒng)的set與get函數(shù),利用PlotPub是否更加易寫、易讀與高效呢?

        此外,PlotPub的示例中,還提供了:

         ①窗格中繪圖區(qū)域大小設(shè)置。

         ②柵格比例、坐標(biāo)軸標(biāo)簽等參數(shù)設(shè)置。

         ③多曲線標(biāo)記點(diǎn)、顏色、線型設(shè)置。

         ......

        并且作者還提供了詳細(xì)的手冊信息,輔助用戶調(diào)用其函數(shù)進(jìn)行作圖。

        具體細(xì)節(jié),大家可以前往其主頁作進(jìn)一步的了解。


附上鏈接:

PlotPub: Publication Quality Graph v2.0 released

http://masumhabib.com/blog/plotpub-publication-quality-graph-v2-0-released/

PlotPub-v2.0 Documentation

http://masumhabib.com/projects/publication-quality-graphs-matlab/plotpub-v2-0-documentation/


04


Gramm工具箱



      有時(shí)候,我們也不僅僅滿足于MATLAB自帶的繪圖風(fēng)格,也希望能有一些其他繪圖風(fēng)格可以直接應(yīng)用。

      Gramm就是在PlotPub思想的基礎(chǔ)上,進(jìn)一步整合R語言繪圖風(fēng)格,在MATLAB平臺進(jìn)行實(shí)現(xiàn)的這樣一個(gè)優(yōu)秀的繪圖工具箱。


先附上鏈接:

https://github.com/piermorel/gramm


      也許你會問R語言的繪圖風(fēng)格是什么樣呢?我們來看下Gramm與MATLAB直接繪圖代碼和結(jié)果的對比。

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖8

(可點(diǎn)擊圖片放大觀看)

      從上圖中,不難看出,Gramm獨(dú)特的風(fēng)格也十分漂亮,并且代碼量和易讀性也優(yōu)于MATLAB直接編寫。

      Gramm的具體函數(shù)庫和說明如下,具體結(jié)合等著你去探索:

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖9
【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖10
【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖11
【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖12

(可點(diǎn)擊圖片放大觀看)


05


小結(jié)



       

      本講主要介紹MATLAB自帶的繪圖函數(shù)庫MATLAB Plot Gallery以及兩款你不可不知的優(yōu)秀繪圖工具箱PlotPubGramm



END 


【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖13



                          本文作者:張開宇(北京理工大學(xué))


相關(guān)鏈接:

【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(二)

【科研經(jīng)驗(yàn)】快速上手MATLAB數(shù)據(jù)可視化(一)

【科普系列】利用PPT作圖增強(qiáng)科技論文表達(dá)力

【科研經(jīng)驗(yàn)】3D MAX快速入門-簡單基本體構(gòu)建反應(yīng)機(jī)理圖

【科研經(jīng)驗(yàn)】基于Materials Studio的兩相聚合物簡單共混模擬

【科研經(jīng)驗(yàn)】如何用PPT畫簡單示意圖

【科研經(jīng)驗(yàn)】2020版Origin作圖技巧分享

【科研經(jīng)驗(yàn)】如何作出晶體結(jié)構(gòu)渲染圖—crystalmaker小白的逆襲之路


【科研經(jīng)驗(yàn)】如何快速上手MATLAB數(shù)據(jù)可視化(三)的圖14

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

9
1
8