【科研經驗】如何快速上手MATLAB數據可視化(三)



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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖1

善用優秀繪圖工具箱

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖2

你不可不知的繪圖工具箱



【科研經驗】如何快速上手MATLAB數據可視化(三)的圖3



01


導語




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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖4

       通過上一講的實例,不難發現,若想繪制高質量的科研發表圖,需要調用大量函數和指令對原始圖像進行優化調整,從而讓每次繪圖變得極為繁瑣和困難。

       那有什么辦法可以實現更快速更便捷的優化呢?

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

       方案A將你常用的優化策略編寫成一個函數或腳本,每次繪制后直接調用。如:將上一講中關于圖像窗口布局、字體優化等通用內容寫到一個函數中。

function ImgOptimize

%customize a plot to make them publication quality in MATLAB

%%設置窗口窗格情況

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:利用別人封裝好函數、工具箱等進行優化,從而達到事半功倍的效果。正所謂,他山之石,可以攻玉。

       兩個方案比較來說,

       方案A靈活度更高,操作相對復雜。更適合有一定MATLAB編程經驗,希望根據個人或團隊風格定制化繪圖風格的同學。

       方案B操作更簡單,容易上手,能在較短時間內獲得較佳的高質量發表圖,適合希望借助MATLAB實現快速繪圖的同學。

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



02


MATLAB Plot Gallery



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

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


附上鏈接:

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

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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖5

(可點擊圖片放大觀看)


03


PlotPub工具箱



      一個復雜高質量的科學發表圖需要調用大量的set與get函數對布局、字體、線寬、顏色等細節進行調整。那是否可以用面向對象的編程思想和類的結構對這些細節進行整合呢?

      當然可以,PlotPub正是基于這樣的想法應運而生。

      在實際應用時,只需要利用addpath函數將PlotPub對應的函數庫導入即可。

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


附上鏈接:

https://github.com/masumhabib/PlotPub

應用實例效果 


快速設置顏色、線寬和坐標軸


       以三組不同相位的50Hz的正弦電壓信號為例,進行應用:

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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖6

原始數據繪制圖

      下面開始利用PlotPub進行調整:

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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖7

調整后的結果

       相比于傳統的set與get函數,利用PlotPub是否更加易寫、易讀與高效呢?

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

         ①窗格中繪圖區域大小設置。

         ②柵格比例、坐標軸標簽等參數設置。

         ③多曲線標記點、顏色、線型設置。

         ......

        并且作者還提供了詳細的手冊信息,輔助用戶調用其函數進行作圖。

        具體細節,大家可以前往其主頁作進一步的了解。


附上鏈接:

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工具箱



      有時候,我們也不僅僅滿足于MATLAB自帶的繪圖風格,也希望能有一些其他繪圖風格可以直接應用。

      Gramm就是在PlotPub思想的基礎上,進一步整合R語言繪圖風格,在MATLAB平臺進行實現的這樣一個優秀的繪圖工具箱。


先附上鏈接:

https://github.com/piermorel/gramm


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

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖8

(可點擊圖片放大觀看)

      從上圖中,不難看出,Gramm獨特的風格也十分漂亮,并且代碼量和易讀性也優于MATLAB直接編寫。

      Gramm的具體函數庫和說明如下,具體結合等著你去探索:

【科研經驗】如何快速上手MATLAB數據可視化(三)的圖9
【科研經驗】如何快速上手MATLAB數據可視化(三)的圖10
【科研經驗】如何快速上手MATLAB數據可視化(三)的圖11
【科研經驗】如何快速上手MATLAB數據可視化(三)的圖12

(可點擊圖片放大觀看)


05


小結



       

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



END 


【科研經驗】如何快速上手MATLAB數據可視化(三)的圖13



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


相關鏈接:

【科研經驗】如何快速上手MATLAB數據可視化(二)

【科研經驗】快速上手MATLAB數據可視化(一)

【科普系列】利用PPT作圖增強科技論文表達力

【科研經驗】3D MAX快速入門-簡單基本體構建反應機理圖

【科研經驗】基于Materials Studio的兩相聚合物簡單共混模擬

【科研經驗】如何用PPT畫簡單示意圖

【科研經驗】2020版Origin作圖技巧分享

【科研經驗】如何作出晶體結構渲染圖—crystalmaker小白的逆襲之路


學報2021.1.20版.jpg


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

2
2