Matlab—颜色图、簇状堆积柱状图和阴影Error Bar

Matlab里内置了很多绘图函数,也有很多开源的可以下载(Google很容易检索到)。这里介绍三种最近碰到的主要用于Paper里的几种图,有的可以用Excel绘制,但是相当繁琐,有那个时间去百度去谷歌,不如直接Matlab(或者其他很多工具像Origin,Suffer,R语言和Python等),写点code,一劳永逸。直入正题:

1. 颜色图

主要的函数是imagesc

运行如下代码可直接看到大体效果:

A = rand(6, 12);
imagesc(A);
set(gca, 'XTick',  [1:12]);

《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 color map.jpg

然而实际应用过程中,纵横坐标很可能是字符串,而且我们都习惯从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); 

最终效果如下:

《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 最终效果.jpg

完整代码如下:

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

《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 rawData.jpg

然后我们想横坐标是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根柱子的,每个柱子上累计的图

开始效果图如下,注意这个函数不完美,并没有把颜色给区分开,也没有图例。
我们可以在这个图形界面下直接添加修改即可(具体比较简单,跟其他软件一样)

《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 开始效果图.jpg
《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 效果设置.jpg

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) 

《Matlab—颜色图、簇状堆积柱状图和阴影Error Bar》 shadedErrorBar.jpg

点赞