MATLAB heatmap()函数:创建热图(附带实例)
在 MATLAB 中,利用函数 heatmap() 可以创建热图,其调用格式如下:
另外,在 MATLAB 中,利用函数 sortx() 可以对热图行中的元素进行排序,其调用格式如下:
【实例】创建热图。示例文件 outages.csv 中包含有关美国电力中断事故的数据。在编辑器中编写以下程序并运行。

图 1 热图
归一化每列的颜色时,每列中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示导致每个区域停电的最大原因。
【实例】热图行排序。在编辑器中编写以下程序并运行。

图 2 热图行排序
heatmap(tbl,xvar,yvar) % 基于表 tbl 创建热图;默认颜色基于计数聚合 % xvar、yvar 分别为沿 x 轴、y 轴显示的表变量 heatmap(tbl,xvar,yvar,'ColorVariable',cvar) % 使用 cvar 指定的表变量来计算颜色数据;默认计算方法为均值聚合 heatmap(cdata) % 基于矩阵 cdata 创建热图;每个单元格对应 cdata 中的一个值 heatmap(xvalues,yvalues,cdata) % 指定沿 x 轴和 y 轴显示的值的标签
另外,在 MATLAB 中,利用函数 sortx() 可以对热图行中的元素进行排序,其调用格式如下:
sortx(h,row) % 按升序(从左到右)显示 row 中的元素 sortx(h,row,direction) % 若 direction 为 'descend',则对值按降序排序 % 也可将 direction 指定为元素为 'ascend' 或 'descend' 的数组,以实现对 row 中的每一行按不同方式排序 sortx(__,'MissingPlacement',loc) % 指定将 NaN 放在开头还是末尾 % loc 可为 'first'、'last' 或 'auto'(默认) sortx(h) % 按升序显示顶行中的元素在 MATLAB 中,利用函数 sorty() 可以对热图列中的元素进行排序,其调用格式与 sortx() 相同,这里不再赘述。
【实例】创建热图。示例文件 outages.csv 中包含有关美国电力中断事故的数据。在编辑器中编写以下程序并运行。
T = readtable('outages.csv'); % 将示例文件读入表中 T(1:5,:) % 查看前五行数据(输出略) subplot(1,2,1) h = heatmap(T,'Region','Cause'); % 创建热图,X、Y 轴分别显示区域和停电原因 subplot(1,2,2) h = heatmap(T,'Region','Cause'); h.ColorScaling = 'scaledcolumns'; % 归一化每列的颜色 h.ColorScaling = 'scaledrows'; % 归一化每行的颜色运行程序后,输出如下图所示图形:

图 1 热图
归一化每列的颜色时,每列中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示导致每个区域停电的最大原因。
【实例】热图行排序。在编辑器中编写以下程序并运行。
T = readtable('outages.csv'); subplot(1,2,1) h = heatmap(T,'Region','Cause'); sortx(h,'winter storm','descend') % 按降序显示 'winter storm' 行中的值 subplot(1,2,2) sortx(h,{'unknown','earthquake'}) % 基于多行重新排列热图的列 sortx(h) % 还原原始热图列顺序,输出略运行程序后,输出如下图所示图形:

图 2 热图行排序