Matlab 出版繪圖

論文繪圖是完成學術論文的一個重要環節,美觀的插圖能夠更好地闡述結論和有效地提升文章質量。學術論文中常見的插圖包括:框架圖,演算法說明圖,數據分析圖,以及實物圖。常見的繪圖工具中包括Matlab,python,origin等。Matlab雖然具有強大的計算功能,但繪圖往往過於呆板。可是,筆者發現,很多人都仍希望在Matlab上繪圖(其他軟體具有學習成本或項目需求等原因)。那麼,SCI投稿Latex撰寫過程,如何用matlab來繪製美觀數據分析圖?

為了使耦合性更少,用matlab來繪數據分析圖的步驟包括四步,首先是數據預處理(包括程序處理完後存儲,導入和預處理),第二步是創建數據分析的基礎圖(這一步關鍵是邏輯的處理與圖的表現形式的選擇),第三步是美化(這一步是讓matlab繪出的圖能夠盡量美觀,但沒必要花過多的時間,並且需要一定的審美能力),第四步是後處理。

# 數據預處理

該步驟需要確定好,需要分析的數據是什麼。並且通過實驗將這些數據記錄。這一步是繪製圖形的基礎。

需要用到的命令:load

# 創建數據分析的基礎圖

要說明的是,當然也可以直接在基礎圖修改屬性,但是這樣會使得程序修改起來非常的不方便,有時候想改一個東西還要找半天。而採用基礎圖與美化的兩步驟,則較好地將這種情況避免了。下面基礎圖從單圖與多圖兩個方面介紹,多圖是單圖的一種特殊情況。

## 單圖

1. 繪製和設置圖布,需要用到的命令是figure。

關於圖在屏幕上顯示的**位置**和**大小**用屬性Position調整,Position屬性是以屏幕左下角為原點,[left bottom width height],單位是通過Units屬性選擇(inch或pixel,其中1inch大約為2.5厘米,所以能夠很快的估計出想要出現的位置)。

Figure1=figure(Units, inch/pixels, Position, [5 5 5 3]/[left bottom width height]);%position是設置figure在屏幕中的位置,對圖像的輸出不影響!hold on;

關於調整圖像的性質,可以使用自命名句柄,或者gcf(get current figure)。

2. 圖布中的點與線的繪製,需要用到的命令包括plot,line,errorbar

關於plot的一些基本屬性可以參考:blog.sina.com.cn/s/blog。在此要提到的是,所有的plot句柄都需要命名,以方便後面美化的處理。另外,建議axis放在首個plot後面。坐標軸的選擇滿足黃金分割點,不可過滿或過疏。

hFit = plot(xfit, yfit ); hold on;axis([xmin xmax ymin ymax]);hE = errorbar(xdata_m, ydata_m, ydata_s);hData = line(xVdata, yVdata );

3. 圖布中的其他圖形的繪製

1)標註

標註包括矩形和箭頭,矩形的命令為rectangle,箭頭的命令為annotation/arrow(file exchange: au.mathworks.com/matlab)

rectangle(Position,[left bottom width height],LineWidth,2,EdgeColor,r);

2)柱狀圖,需要命令為bar

3)餅狀圖,三維圖

4. 圖布中的圖示說明 (xlabel,ylabel ,legend,text,title...)

1)legend可以將之前命名的plot的句柄顯示在圖上作為圖標。

2)xlabel和ylabel確定位置和命名。

hlegend=legend([pltname1, pltname2, pltname3…],』DisN1』 , 』DisN2』 , 』DisN3』 …);hXLabel=xlabel(x(m),Position,[110,-2.2],FontSize,10);hYLabel=ylabel(y(m))

需要注意的是,圖示說明也需要命名句柄。

3)title

hTitle=title (My Publication-Quality Graphics);

## 多圖

Matlab自帶的subplot有很多不能自動設置的地方,因此找到了幾個學習成本較低的替代方案:

1. subaxis

au.mathworks.com/matlab

2. tight-subplot

au.mathworks.com/matlab

但是根據個人經驗,在多圖上花的時間過長,最後到latex中排版時,仍然費力不討好。所以最好還是採用單圖的方式,然後利用ps或ppt或word或visio工具來拼湊成多圖。當然,如果確有簡便直接的方法保證在latex中顯示美觀,歡迎告之以補充改正。

# 美化

## 基礎美化

基礎美化包括matlab基礎圖形句柄屬性的熟悉。常見的命令包括:

線(默認):『Color』是顏色,』LineStyle』是線型,『LineWidth』是線寬;

標記(』Marker』): MarkerFaceColor是邊顏色,MarkerEdgeColor是內部顏色,MarkerSize是大小;

字體:』FontSize』是大小,』FontWeight』是粗細,』Interpreter』=』Latex』。

## 論文高級美化

對於IEEE的論文,筆者進行了一些嘗試與調研,得到以下一些經驗。

* 粗線粗標(thicker lines and larger markers);(根據實際點的個數衡量)

* 設置參考

| Item |Default| Paper |Presentation |

|---|---|---|---|

|Width| 5.6 |varies/3.5(IEEE)? |varies|

|Height |4.2 |varies/3.5(IEEE)? |varies|

|AxesLineWidth| 0.5| 0.75 |1|

|FontSize| 10| 10| 14|

|LineWidth| 0.5| 1(ERRORBAR)/1.5(OTHERLINE)| 2|

|MarkerSize|5/6| 8 |12|

* 顏色配色

其實很多時候,說matlab不好看,是因為不會配圖。因此,可以找專門的RGB配色網站,保留常見的配色方案,供論文中配圖使用。比如,我找到的一個配色網站:

http://colorbrewer2.org/#type=sequential&scheme=YlGnBu&n=3

該網站的核心是,繪圖盡量要用漸變色,少用對比色。而漸變色的選擇可以從2種到12種,基本能夠滿足論文的需求。

另外,還有:

blog.csdn.net/peter_zha

該網站將ggplot和Tableau的配色方案相應對比。該文中提到一個好用的小工具,即顏色拾取器,能夠方便地獲取論文中的配色。colorschemer.com/

# 後處理

## 輸出

1. 輸出eps格式

set(gcf, PaperPositionMode, auto);print -depsc2 finalPlot1.eps

2. 輸出word-png格式

print(improvedExample,-dpng,-r600);%-dxxx,-rnnn %%IEEE要求是600DPI

xxx表示輸出格式,nnn表示圖片的解析度,單位是像素/英寸(dots per inch,DPI)。

dxxx包括:-depsc、-dpdf(print(FillPageFigure,-dpdf,-fillpage/-bestfit))、-djpeg

# 需要注意的問題

1. 用相對值annotation生成的符號,列印的時候位置錯亂;

2. 用絕對值生成的text,列印的時候位置也會錯亂;

3. 一般默認的情況下,legend會按照畫圖的順序逐一標出點、線等要素的標識,如果其中有些點線不想標出標識,該怎麼辦?

R: set(get(get(h,Annotation),LegendInformation),IconDisplayStyle,off); % h是某一要素的句柄

4. 如何去掉坐標軸的刻度值?

R: set(gca,xtick,[]);

# 參考文獻

1. 如何在論文中畫出漂亮的插圖?zhihu.com/question/2166

Python繪圖入門:codingpy.com/article/a-

matplotlib.org/

2. Matlab繪圖基礎

blog.sciencenet.cn/blog

blog.sciencenet.cn/blog

3. 新手必看,體系全面的畫圖入門教程:

dgleich.wordpress.com/2

4. making pretty graphs in Matlab step by step

blogs.mathworks.com/lor

5. 畫圖進階教程:

matlabtips.com/beautifu

推薦閱讀:

論小龍女與穆桂英的親緣關係
提高英文論文錄用成功率:恰當回複審稿人意見
關於參考文獻

TAG:MATLAB | 論文寫作 |