热图是一种将数据矩阵中的各个值按一定规律映射为颜色展示,基本原则是用颜色代表数字,让数据呈现更直观、对比更明显。若行和列都为样品,展示的可能是对应的两个样品之间的相关性。


MATLAB提供了热图绘制函数heatmap,可以修改其图像相关的属性,绘制起来方便,具体函数用法如下:

heatmap函数创建热图

语法

h=heatmap(tbl,xvar,yvar) h=heatmap(tbl,xvar,yvar,'ColorVariable',cvar) h=heatmap(cdata) h=heatmap(xvalues,yvalues,cdata) h=heatmap(___,Name,Value) h=heatmap(parent,___) 说明 h = heatmap(tbl,xvar,yvar) 基于表 tbl 创建一个热图,并返回 HeatmapChart 对象。xvar 输入参数指示沿 x 轴显示的表变量。yvar 输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 x 和 y 值一起出现在表中的总次数。可使用 h 在创建热图之后对其进行修改。 h=heatmap(tbl,xvar,yvar,'ColorVariable',cvar) 使用 cvar 指定的表变量来计算颜色数据。默认的计算方法为均值聚合。 h=heatmap(cdata) 基于矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。 h=heatmap(xvalues,yvalues,cdata) 指定沿 x 轴和 y 轴显示的值的标签。 h=heatmap(___,Name,Value) 使用一个或多个名称-值对组参数指定热图的其他选项。请在所有其他输入参数之后指定这些选项。 h = heatmap(parent,___) 在由 parent 指定的图窗、面板或选项卡上创建热图。


1.基于表格数据创建热图

实例1

程序

clc;%清除命令行窗口命令 clear all;%清除工作区变量 close all;%关闭图形窗口 %随机生成数据 num = 10; cdata = rand(num,num); %h=heatmap(cdata) h=heatmap(cdata);

运行结果

matlab的描点作图程序(MATLAB绘制热图程序加实例)(1)


2.修改热图的属性

热图的图形包括了x轴名称、y轴名称、x和y的数据、颜色、数据标注、图例等属性,可以通过修改热图函数的返回值的句柄设置其属性。

实例2

程序

clc;%清除命令行窗口命令 clear all;%清除工作区变量 close all;%关闭图形窗口 %随机生成相关系数数据 num = 10; cdata = rand(num,num); %h=heatmap(cdata) string={'S1','S2','S3','S4','S5','S6','S7','S8','S9','S10'}; x_name = string; y_name = string; h=heatmap(x_name,y_name,cdata); h.Title = 'Correlation Coefficient';%设置图形的标题 h.CellLabelFormat = '%0.3f';%设置显示数据的小数位数为3位 %设置x轴和y轴的名字 h.XLabel = 'Sizes'; h.YLabel = 'Colors'; h.FontName='Times New Roman';%设置显示的字体 h.FontSize = 12;%设置显示的字体大小 Color = [1 1 1]; set(gcf,'Color',Color);%设置背景颜色 map = [1 1 1; 1 1 0; 0.5 1 0.4; 0.2 0.85 0.2; 0.4 0.7 1; 0.2 0.5 0.8;0.5 0.6 0.7;0.5 0.8 0.9;0.2 0.5 0.4;0 0.5 0.6]; % 自己定义颜色 colormap(map) saveas(gcf,sprintf('1.jpg'),'bmp'); %自动保存图片

运行结果

matlab的描点作图程序(MATLAB绘制热图程序加实例)(2)


参考资料

[1] 博客园作者凯鲁嘎吉 的《MATLAB实例:求相关系数、绘制热图并找到强相关对》,文章链接:

https://www.cnblogs.com/kailugaji/p/11891943.html

[2] 知乎作者Alien《MATLAB画图技巧与实例(十一):热图heatmap函数》,文章链接:https://zhuanlan.zhihu.com/p/345926902

[3] MATLAB的mathwork网页.

,