Matlab里內(nèi)置了很多繪圖函數(shù),也有很多開源的可以下載(Google很容易檢索到)。這里介紹三種最近碰到的主要用于Paper里的幾種圖,有的可以用Excel繪制,但是相當(dāng)繁瑣,有那個(gè)時(shí)間去百度去谷歌,不如直接Matlab(或者其他很多工具像Origin,Suffer,R語(yǔ)言和Python等),寫點(diǎn)code,一勞永逸。直入正題:
1. 顏色圖
主要的函數(shù)是imagesc
運(yùn)行如下代碼可直接看到大體效果:
A = rand(6, 12);
imagesc(A);
set(gca, 'XTick', [1:12]);
然而實(shí)際應(yīng)用過(guò)程中,縱橫坐標(biāo)很可能是字符串,而且我們都習(xí)慣從Excel里copy這些數(shù)據(jù),現(xiàn)在我們把這些字符串從Excel里復(fù)制到Matlab里,然后以這些字符串為縱橫坐標(biāo)。
運(yùn)行下面代碼先新建一個(gè)cell:
x = cell(12, 1); %橫坐標(biāo)
y = cell(6, 1); %縱坐標(biāo)
然后雙擊工作區(qū)里的cell,復(fù)制excel里的數(shù)據(jù),右擊選擇粘貼Excel數(shù)據(jù)(Ctrl+Shift+V)粘貼到cell里即可。
然后我們?cè)龠\(yùn)行以下代碼(上面的圖先不要關(guān)閉,如果關(guān)了的話重新運(yùn)行上面的代碼即可)
set(gca,'XTickLabel', x);
set(gca,'YTickLabel', y);
最終效果如下:
完整代碼如下:
A = rand(6, 12);
imagesc(A);
set(gca, 'XTick', [1:12]);
%這一步要從Excel里復(fù)制,或者可以直接在Matlab里編輯
x = cell(12, 1); %橫坐標(biāo)
y = cell(6, 1); %縱坐標(biāo)
set(gca,'XTickLabel', x);
set(gca,'YTickLabel', y);
2. 簇狀堆積柱狀圖
主要的函數(shù)是plotBarStackGroups
,需要從網(wǎng)上下載,點(diǎn)這里。下載完成后放到默認(rèn)路徑里。
假如我們有下面的Excel數(shù)據(jù)(12×6):
然后我們想橫坐標(biāo)是A-L代表不同的組,每組有甲乙丙三個(gè)柱子,每個(gè)甲乙丙柱子上累加有一X和二X。我么把這個(gè)12×6數(shù)組復(fù)制粘貼存為Matlab變量
B
,當(dāng)然也可以自己在Matlab里隨機(jī)生成類似的隨機(jī)數(shù)(e.g., B = randi([1,10],[12,6])
)然后創(chuàng)建一個(gè)cell把A-L復(fù)制進(jìn)去,也可以直接用上面的
x
然后運(yùn)行以下代碼:
C = reshape(B, [12 3 2]); % 將數(shù)據(jù)B轉(zhuǎn)換為一個(gè)12行3列2頁(yè)的三維數(shù)組
plotBarStackGroups(C,x); % 繪制一個(gè)12個(gè)以x為group標(biāo)簽的,每個(gè)組有甲乙丙3根柱子的,每個(gè)柱子上累計(jì)的圖
開始效果圖如下,注意這個(gè)函數(shù)不完美,并沒(méi)有把顏色給區(qū)分開,也沒(méi)有圖例。
我們可以在這個(gè)圖形界面下直接添加修改即可(具體比較簡(jiǎn)單,跟其他軟件一樣)
3. 陰影error bar圖
主要函數(shù)是shadedErrorBar
, 需要下載,點(diǎn)這里
運(yùn)行如下代碼:
clc; %把命令窗口里的都清掉啊
clear all; %把工作區(qū)里的變量都清掉啊
x = [1:20]';
y = randi([10,30],[20,1]); %隨機(jī)數(shù)
error = randi([1,5],[20,1]); %隨機(jī)數(shù)
shadedErrorBar(x,y,error,'-db'); %藍(lán)色,菱形(diamond)