今天,带来Matlab中热土绘制函数heatmap的详细使用方法。本文主要介绍heatmap函数在matlab中的常见用法、语法说明、基于表格数据创建热图、重新排列热图标签、为热图颜色指定表变量、指定颜色数据的计算方法、基于矩阵数据创建热图、使用自定义轴标签基于矩阵数据创建热图、归一化每行或每列的颜色、使用自定义聚合方法计算颜色数据等用法。
下面我们将开始非常详细的 Matlab heatmap 函数语法介绍,实例引用,结果展示。首先,我们给出 Matlab 中关于 heatmap 函数的帮助文本如下:
>> help heatmap
HeatMap A false color 2D image of the data values in a matrix.
HeatMap displays the matrix data values as colors in a
two-dimensional map.
HeatMap properties:
Standardize - Dimension in which the values are standardized.
Colormap - Colormap used to display the heat map.
DisplayRange - The range of the values to be display.
Symmetric - Logical flag to scale color symmetrically about zero.
ImputeFun - Function name or handle for imputing missing values.
ColumnLabels - Cell array of strings to label columns (x-axis).
RowLabels - Cell array of strings to label rows (y-axis).
ColumnLabelsRotate - Column labels orientation.
RowLabelsRotate - Row labels orientation.
Annotate - Logical flag to display value text in heat map.
AnnotPrecision - Data value display precision.
AnnotColor - Annotation text color
ColumnLabelsColor - Structure of information for coloring column labels.
RowLabelsColor - Structure of information for coloring row labels.
LabelsWithMarkers - Logical flag to show colored markers for row/column labels.
HeatMap methods:
HeatMap - Create a HeatMap object.
view - Views a HeapMap object in a MATLAB figure.
plot - Render a heat map
addXLabel - Add HeatMap x-axis (column) label.
addYLabel - Add HeatMap y-axis (row) label.
addTitle - Add HeatMap Graph title.
Example:
data = gallery('invhess',20);
hm = HeatMap(data);
常见用法
heatmap(tbl,xvar,yvar)
heatmap(tbl,xvar,yvar,'ColorVariable',cvar)
heatmap(cdata)
heatmap(xvalues,yvalues,cdata)
heatmap(___,Name,Value)
heatmap(parent,___)
h = heatmap(___)
语法说明
heatmap(tbl,xvar,yvar) 基于表 tbl 创建一个热图。xvar 输入参数指示沿 x 轴显示的表变量。yvar 输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 x 和 y 值一起出现在表中的总次数。
heatmap(tbl,xvar,yvar,’ColorVariable’,cvar) 使用 cvar 指定的表变量来计算颜色数据。默认的计算方法为均值聚合。
heatmap(cdata) 基于矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。
heatmap(xvalues,yvalues,cdata) 指定沿 x 轴和 y 轴显示的值的标签。
heatmap(___,Name,Value) 使用一个或多个名称-值对组参数指定热图的其他选项。请在所有其他输入参数之后指定这些选项。
heatmap(parent,___) 在由 parent 指定的图窗、面板或选项卡上创建热图。
h = heatmap(___) 返回 HeatmapChart 对象。创建图后,使用 h 修改图属性。
注意:
我装的是Matlab2016,支持并不是很好,甚至不支持table格式数据作图。而且需要HeatMap才可以使用!下面所有图片均来源于官方!
也就是说,2016版本,要HeatMap这么写才可以,并且只能处理矩阵数据,不能处理table数据。
此外,也不支持字符串匹配。
基于表格数据创建热图
基于内科病人数据表创建一个热图。
加载 patients 数据集,并基于加载到工作区中的变量子集创建一个表。然后创建一个热图,计算具有一组相同 Smoker 和 SelfAssessedHealthStatus 值的患者总数。
load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus');
重新排列热图标签
创建一个热图,并重新排列 y 轴上的标签。
加载 patients 数据集,并基于这些数据创建一个热图。将 HeatmapChart 对象赋给变量 h。
load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus');
重新排列 y 轴上的标签。
h.YDisplayData = {'Excellent','Good','Fair','Poor'};
您也可以通过将数据更改为分类数据,然后使用 reordercats 函数重新排列类别来重新排列标签。同样,您可以分别使用 addcats、removecats 或 renamecats 函数添加、删除或重命名热图标签。
为热图颜色指定表变量
创建一个热图,并指定用来确定热图单元格颜色的表变量。
加载 patients 数据集,并基于这些数据创建一个热图。通过将 ColorVariable 选项设置为 ‘Age’,使用具有一组特定 Smoker 和 SelfAssessedHealthStatus 值的患者平均年龄为每个单元格着色。
load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus','ColorVariable','Age');
指定颜色数据的计算方法
创建一个热图,并指定用来确定热图单元格颜色的表变量和计算方法。
加载 patients 数据集,并基于这些数据创建一个热图。使用具有一组特定 Smoker 和 SelfAssessedHealthStatus 值的患者中位数年龄为每个单元格着色。将 ColorVariable 选项指定为 ‘Age’,并将 ColorMethod 选项指定为 ‘median’。
load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus','ColorVariable','Age','ColorMethod','median');
基于矩阵数据创建热图
创建一个数据矩阵。然后创建矩阵值的热图。x 轴和 y 轴上的默认标签显示为 1、2、3 等。
cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
h = heatmap(cdata);
使用自定义轴标签基于矩阵数据创建热图
创建一个数据矩阵。然后创建矩阵值的热图。通过将前两个输入参数指定为所需的标签,在 x 轴和 y 轴上使用自定义标签。通过设置 HeatmapChart 对象的属性,指定标题和轴标签。
cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
xvalues = {'Small','Medium','Large'};
yvalues = {'Green','Red','Blue','Gray'};
h = heatmap(xvalues,yvalues,cdata);
h.Title = 'T-Shirt Orders';
h.XLabel = 'Sizes';
h.YLabel = 'Colors';
归一化每行或每列的颜色
创建一个热图,并通过设置 ColorScaling 属性来归一化每列或每行的颜色。
将示例文件 outages.csv 读入到表中。示例文件中包含表示美国电力中断事故的数据。该表包含六列:Region、OutageTime、Loss、Customers、RestorationTime 和 Cause。显示每一列的前五行。
T = readtable('outages.csv');
T(1:5,:)
ans=<em>5×6 table</em>
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ ______ __________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' }
{'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
创建一个热图,x 轴显示不同的区域,y 轴显示不同的停电原因。在每个单元格中,显示每个区域由于特定原因经历停电的次数。
h = heatmap(T,'Region','Cause');
归一化每列的颜色。每一列中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示导致每个区域停电的最大原因。
h.ColorScaling = 'scaledcolumns';
归一化每行的颜色。每一行中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示各原因造成停电次数最多的区域。
h.ColorScaling = 'scaledrows';
使用自定义聚合方法计算颜色数据
创建一个热图,并使用通过自定义聚合方法计算的数据为单元格着色。使用 accumarray 函数计算颜色数据。
将示例文件 Temperature.csv 读入到表中。该文件包含三列:Month、Year 和 TemperatureF。
tbl = readtable('TemperatureData.csv');
根据表的 Month 和 Year 列创建分类数组。然后确定用作 x 轴和 y 轴标签的唯一月份和年份。
months = categorical(tbl.Month);
years = categorical(tbl.Year);
xlabels = categories(months);
ylabels = categories(years);
基于唯一月份和年份的数量确定生成的颜色数据的最终大小。
nummonths = numel(xlabels);
numyears = numel(ylabels);
将分类数组 months 和 years 转换为数字索引,以用于 accumarray 函数。使用 accumarray 函数计算颜色数据,作为每个月份和年份组合的最高温度。使用 NaN 表示缺失的月份和年份组合。
x = double(months);
y = double(years);
temps = tbl.TemperatureF;
cdata = accumarray([y,x],temps,[numyears,nummonths],@max,NaN);
创建热图。将 x 轴和 y 轴分别标记为月份和年份。使用计算的矩阵数据为热图单元格着色。
h = heatmap(xlabels,ylabels,cdata);
注意:您可以使用 reordercats 函数为分类数组重新排列轴标签。
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/833.html