Matlab里内置了很多绘图函数,也有很多开源的可以下载(Google很容易检索到)。这里介绍三种最近碰到的主要用于Paper里的几种图,有的可以用Excel绘制,但是相当繁琐,有那个时间去百度去谷歌,不如直接Matlab(或者其他很多工具像Origin,Suffer,R语言和Python等),写点code,一劳永逸。直入正题:
1. 颜色图
主要的函数是imagesc
运行如下代码可直接看到大体效果:
A = rand(6, 12);
imagesc(A);
set(gca, 'XTick', [1:12]);
然而实际应用过程中,纵横坐标很可能是字符串,而且我们都习惯从Excel里copy这些数据,现在我们把这些字符串从Excel里复制到Matlab里,然后以这些字符串为纵横坐标。
运行下面代码先新建一个cell:
x = cell(12, 1); %横坐标
y = cell(6, 1); %纵坐标
然后双击工作区里的cell,复制excel里的数据,右击选择粘贴Excel数据(Ctrl+Shift+V)粘贴到cell里即可。
然后我们再运行以下代码(上面的图先不要关闭,如果关了的话重新运行上面的代码即可)
set(gca,'XTickLabel', x);
set(gca,'YTickLabel', y);
最终效果如下:
完整代码如下:
A = rand(6, 12);
imagesc(A);
set(gca, 'XTick', [1:12]);
%这一步要从Excel里复制,或者可以直接在Matlab里编辑
x = cell(12, 1); %横坐标
y = cell(6, 1); %纵坐标
set(gca,'XTickLabel', x);
set(gca,'YTickLabel', y);
2. 簇状堆积柱状图
主要的函数是plotBarStackGroups
,需要从网上下载,点这里。下载完成后放到默认路径里。
假如我们有下面的Excel数据(12×6):
然后我们想横坐标是A-L代表不同的组,每组有甲乙丙三个柱子,每个甲乙丙柱子上累加有一X和二X。我么把这个12×6数组复制粘贴存为Matlab变量
B
,当然也可以自己在Matlab里随机生成类似的随机数(e.g., B = randi([1,10],[12,6])
)然后创建一个cell把A-L复制进去,也可以直接用上面的
x
然后运行以下代码:
C = reshape(B, [12 3 2]); % 将数据B转换为一个12行3列2页的三维数组
plotBarStackGroups(C,x); % 绘制一个12个以x为group标签的,每个组有甲乙丙3根柱子的,每个柱子上累计的图
开始效果图如下,注意这个函数不完美,并没有把颜色给区分开,也没有图例。
我们可以在这个图形界面下直接添加修改即可(具体比较简单,跟其他软件一样)
3. 阴影error bar图
主要函数是shadedErrorBar
, 需要下载,点这里
运行如下代码:
clc; %把命令窗口里的都清掉啊
clear all; %把工作区里的变量都清掉啊
x = [1:20]';
y = randi([10,30],[20,1]); %随机数
error = randi([1,5],[20,1]); %随机数
shadedErrorBar(x,y,error,'-db'); %蓝色,菱形(diamond)