首页 > 编程笔记 > MATLAB笔记 阅读:2

MATLAB heatmap()函数:创建热图(附带实例)

在 MATLAB 中,利用函数 heatmap() 可以创建热图,其调用格式如下:
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 热图行排序

相关文章