Matlab热图创建函数heatmap详细教程

4.4
(5)

今天,带来Matlab中热土绘制函数heatmap的详细使用方法。本文主要介绍heatmap函数在matlab中的常见用法、语法说明、基于表格数据创建热图、重新排列热图标签、为热图颜色指定表变量、指定颜色数据的计算方法、基于矩阵数据创建热图、使用自定义轴标签基于矩阵数据创建热图、归一化每行或每列的颜色、使用自定义聚合方法计算颜色数据等用法。

Matlab热图创建函数heatmap详细教程

下面我们将开始非常详细的 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');
Matlab热图创建函数heatmap详细教程

重新排列热图标签

创建一个热图,并重新排列 y 轴上的标签。

加载 patients 数据集,并基于这些数据创建一个热图。将 HeatmapChart 对象赋给变量 h。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus');
Matlab热图创建函数heatmap详细教程

重新排列 y 轴上的标签。

h.YDisplayData = {'Excellent','Good','Fair','Poor'};
Matlab热图创建函数heatmap详细教程

您也可以通过将数据更改为分类数据,然后使用 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');
Matlab热图创建函数heatmap详细教程

指定颜色数据的计算方法

创建一个热图,并指定用来确定热图单元格颜色的表变量和计算方法。

加载 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');
Matlab热图创建函数heatmap详细教程

基于矩阵数据创建热图

创建一个数据矩阵。然后创建矩阵值的热图。x 轴和 y 轴上的默认标签显示为 1、2、3 等。

cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
h = heatmap(cdata);
Matlab热图创建函数heatmap详细教程

使用自定义轴标签基于矩阵数据创建热图

创建一个数据矩阵。然后创建矩阵值的热图。通过将前两个输入参数指定为所需的标签,在 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';
Matlab热图创建函数heatmap详细教程

归一化每行或每列的颜色

创建一个热图,并通过设置 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');
Matlab热图创建函数heatmap详细教程

归一化每列的颜色。每一列中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示导致每个区域停电的最大原因。

h.ColorScaling = 'scaledcolumns';
Matlab热图创建函数heatmap详细教程

归一化每行的颜色。每一行中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。最后一种颜色表示各原因造成停电次数最多的区域。

h.ColorScaling = 'scaledrows';
Matlab热图创建函数heatmap详细教程

使用自定义聚合方法计算颜色数据

创建一个热图,并使用通过自定义聚合方法计算的数据为单元格着色。使用 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);
Matlab热图创建函数heatmap详细教程

注意:您可以使用 reordercats 函数为分类数组重新排列轴标签。

共计5人评分,平均4.4

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/833.html

(2)
微信公众号
古哥的头像古哥管理团队
上一篇 2020年11月16日 20:45
下一篇 2020年11月18日 21:24

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号