【MATLAB绘图进阶第3弹】Matlab绘制热图系列

热图的主要作用是直观展示重点研究对象的差异情况,多用于经济学与工学差异性分析之中,我们常见的多变量相关系数矩阵与混淆矩阵就可以通过热图增加图示的美感,南同学将和大家一起实现一张多样化的热图绘制!

 成图效果展示

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第1张图片

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第2张图片

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第3张图片

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第4张图片

 绘图三步走 

  1. 配色

    重要的事情说三遍:配色、配色、配色!!!好的配色等于成功了一半,第一步也是最重要的一步-提取SCI论文中喜欢的颜色。

  2. 数据准备

    热图数据主要来自于大家计算得到的相关系数矩阵,南同学这次的数据也是自己拟定的,大家这里可以随机应变。

  3. 函数使用

    此图主要用到的函数是热图函数—Heatmap。

   1. 配色

 首先找到类似的图片在PPT中取色,取色步骤同第一篇柱状图文章,需要注意的是Matlab中支持的RGB值为0-1之间,在取得RGB值后除以255即可。取色图片如下:

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第5张图片

将此图片复制到PPT中,插入形状—形状填充—取色器—取色—记录RGB值,将RGB值复制到Matlab中,最终保存为矩阵,这样颜色就提取好啦。 

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第6张图片

 在Matlab中保存为数据矩阵:

%% 配色数据保存
mycolor = [0.474509803921569,0.650980392156863,0.807843137254902;...
 0.682352941176471,0.823529411764706,0.898039215686275;...
 0.941176470588235,0.972549019607843,0.862745098039216;...
 0.992156862745098,0.968627450980392,0.705882352941177;...
 1,0.901960784313726,0.603921568627451];

 2. 数据准备

 数据是小编自己运用rand函数随机生成的0-1之间的矩阵,大家可以结合自己的数据进行替换或者更改。代码如下:

%% 随机生成相关性系数矩阵
clc;
clear;
close all;
X = rand(13); %X为0-1矩阵 
X = round(X,2); %获取矩阵的列数
B = ones(1,size(X,1));%全是1的向量
% 替换X矩阵对角元素,使其均为1
X(logical(eye(size(X))))=B;

3. 函数使用

 使用heatmap:用来绘制热图;heatmap(xvalues, yvalues, cdata);参数依次为 X轴变量名、Y轴变量名与数据矩阵;colormap:产生颜色柱并且赋色。

%% 开始绘制热图
% 命名所有变量名字,这里大家可以替换成自己需要的变量名
label_name = {'N1','N2','N3','N4','N5','N6','N7','N8','N9','N10','N11','N12','N13'};
xlabel_name = label_name;
ylabel_name = label_name;
% 热图函数为heatmap;开始绘制
hot_figure = heatmap(xlabel_name,ylabel_name,X,'FontSize',10);
hot_figure.GridVisible = 'off';
% 设置坐标区名字与图的大标题
hot_figure.Title = 'Heated';
hot_figure.XLabel = 'xlabel';
hot_figure.YLabel = 'ylabel';
%% 对热图上色—colormap函数
colormap(gca,mycolor);

这样最终一张论文热图就完成啦!

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第7张图片

【MATLAB绘图进阶第3弹】Matlab绘制热图系列_第8张图片

代码源文件与资料获取方式:

完整资料链接

你可能感兴趣的:(matlab,开发语言)