本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

heatmap

创建热图

说明

示例

h = heatmap(tbl,xvar,yvar) 基于表 tbl 创建一个热图,并返回 HeatmapChart 对象。xvar 输入参数指示沿 x 轴显示的表变量。yvar 输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 xy 值一起出现在表中的总次数。可使用 h 在创建热图之后对其进行修改。有关属性列表,请参阅 HeatmapChart 属性

示例

h = heatmap(tbl,xvar,yvar,'ColorVariable',cvar) 使用 cvar 指定的表变量来计算颜色数据。默认的计算方法为均值聚合。

示例

h = heatmap(cdata) 基于矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。

示例

h = heatmap(xvalues,yvalues,cdata) 指定沿 x 轴和 y 轴显示的值的标签。

示例

h = heatmap(___,Name,Value) 使用一个或多个名称-值对组参数指定热图的其他选项。请在所有其他输入参数之后指定这些选项。有关属性列表,请参阅 HeatmapChart 属性

h = heatmap(parent,___) 在由 parent 指定的图窗、面板或选项卡上创建热图。

示例

全部折叠

基于内科病人数据表创建一个热图。

加载 patients 数据集,并基于加载到工作区中的变量子集创建一个表。然后创建一个热图,计算具有一组相同 SmokerSelfAssessedHealthStatus 值的患者总数。

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 函数重新排列类别来重新排列标签。同样,您可以分别使用 addcatsremovecatsrenamecats 函数添加、删除或重命名热图标签。

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

加载 patients 数据集,并基于这些数据创建一个热图。通过将 ColorVariable 选项设置为 'Age',使用具有一组特定 SmokerSelfAssessedHealthStatus 值的患者平均年龄为每个单元格着色。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus','ColorVariable','Age');

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

加载 patients 数据集,并基于这些数据创建一个热图。使用具有一组特定 SmokerSelfAssessedHealthStatus 值的患者中位数年龄为每个单元格着色。将 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 读入到表中。示例文件中包含表示美国电力中断事故的数据。该表包含六列:RegionOutageTimeLossCustomersRestorationTimeCause。显示每一列的前五行。

T = readtable('outages.csv');
T(1:5,:)
ans=5×6 table
       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 读入到表中。该文件包含三列:MonthYearTemperatureF

tbl = readtable(fullfile(matlabroot,'examples','graphics','TemperatureData.csv'));

根据表的 MonthYear 列创建分类数组。然后确定用作 x 轴和 y 轴标签的唯一月份和年份。

months = categorical(tbl.Month);
years = categorical(tbl.Year);
xlabels = categories(months);
ylabels = categories(years);

基于唯一月份和年份的数量确定生成的颜色数据的最终大小。

nummonths = numel(xlabels);
numyears = numel(ylabels);

将分类数组 monthsyears 转换为数字索引,以用于 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 函数为分类数组重新排列轴标签。

输入参数

全部折叠

源表,以表或时间表的形式指定。

您可以使用 table 函数根据工作区变量创建表,也可以使用 readtable 函数以表的形式导入数据。您可以使用 timetable 函数根据工作区变量创建时间表。

源表存储在 HeatmapChart 对象的 SourceTable 属性中。

x 轴的表变量,指定为下列形式之一:

  • 指示变量名称之一的字符向量或字符串标量。例如,heatmap(tbl,'HealthStatus','Gender') 为 x 轴选择名为 'HealthStatus' 的变量。

  • 指示表变量索引的数值标量。例如,heatmap(tbl,2,3) 为 x 轴选择表中的第二个变量。

  • 包含一个 true 元素的逻辑向量。

与表变量关联的值必须组合为 categorical 函数能够接受的有限离散类别集合。如果这些值没有组合为有限类别集合,请使用 discretize 函数将它们组合在一起。

x 轴上显示的标签按字母顺序排列。您可以使用分类数组自定义标签。有关示例,请参阅基于表格数据创建热图

选定变量存储在 HeatmapChart 对象的 XVariable 属性中。

y 轴的表变量,指定为下列形式之一:

  • 指示变量名称之一的字符向量或字符串标量。例如,heatmap(tbl,'HealthStatus','Gender') 为 y 轴选择名为 'HealthStatus' 的变量。

  • 指示表变量索引的数值标量。例如,heatmap(tbl,2,3) 为 y 轴选择表中的第三个变量。

  • 包含一个 true 元素的逻辑向量。

与表变量关联的值必须组合为 categorical 函数能够接受的有限离散类别集合。如果这些值没有组合为有限类别集合,请使用 discretize 函数将它们组合在一起。

y 轴上显示的标签按字母顺序排列。您可以使用分类数组自定义标签。有关示例,请参阅基于表格数据创建热图

选定变量存储在 HeatmapChart 对象的 YVariable 属性中。

颜色数据的表变量,指定为下列形式之一:

  • 指示变量名称之一的字符向量或字符串标量。例如,heatmap(__,'ColorVariable,'HealthStatus') 为 y 轴选择名为 'HealthStatus' 的变量。

  • 指示表变量索引的数值标量。例如,heatmap(__,'ColorVariable',1) 为 y 轴选择表中的第三个变量。

  • 包含一个 true 元素的逻辑向量。

与表变量关联的值必须为数值类型或 logical 类型。

使用矩阵数据时,属性值为空 []。选定变量存储在 HeatmapChart 对象的 ColorVariable 属性中。ColorData 属性使用基于选定变量的数据进行填充。

默认情况下,heatmap 基于均值聚合方法来计算颜色数据。要更改计算方法,请设置 ColorMethod 属性。

热图单元格的颜色数据,指定为矩阵。

这些值存储在 HeatmapChart 对象的 ColorData 属性中。

示例: [40 24 68; 68 37 58; 49 23 46]

x 轴上显示的值,指定为分类数组、字符串数组、数值数组或字符向量元胞数组。

示例: {'small','medium','large'}

示例: categorical({'small','medium','large'})

y 轴上显示的值,指定为分类数组、字符串数组、数值数组或字符向量元胞数组。

示例: {'small','medium','large'}

示例: categorical({'small','medium','large'})

父容器,指定为 FigurePanelTabTiledChartLayout 对象。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: heatmap(tbl,xvar,yvar,'ColorVariable','Temperatures','ColorMethod','median')

注意

此处所列的属性只是一部分。有关完整列表,请参阅 HeatmapChart 属性

图标题,指定为字符向量、字符向量元胞数组、字符串数组或分类数组。

示例: h = heatmap(rand(10,10),'Title','My Title Text')

示例: h.Title = 'My Title Text';

要创建一个多行标题,请指定字符向量元胞数组或字符串数组。数组中的每个元素对应一行文本。

示例: h.Title = {'My','Title'};

如果将标题指定为分类数组,MATLAB® 将使用数组中的值,而不是类别。

如果使用表格数据创建图,默认图具有自动生成的标题。如果您不需要标题,请指定 ''

默认情况下,热图支持对您指定的文本使用某些 TeX 标记。使用 TeX 标记可添加下标和上标,修改字体类型和颜色,并在文本中包括特殊字符。如果要在常规文本中使用 TeX 标记字符,如下划线 (_),请在要包含的字符前插入反斜杠 (\)。反斜杠是 TeX 转义字符。有关详细信息,请参阅文本对象的Interpreter属性。

用来计算颜色数据值(存储在 ColorData 中)的方法,指定为 'count''mean''median''sum''none'

如果您不想使用颜色数据表中的第三个变量,请指定下表中的方法。

方法说明
'count'计算每对 xy 值出现在源表中的次数。热图不使用 ColorVariable 属性。当您使用表格数据而没有指定 ColorVariable 参数时,此值为默认值。

如果您要使用颜色数据表中的第三个变量,请将 ColorVariable 属性设置为要使用的变量,并将 ColorMethod 属性指定为下表中列出的方法之一。对于每对 xy 值,这些方法使用源表的 ColorVariable 列中的对应值来计算数据。

方法说明
'mean'计算平均值。如果指定 ColorVariable 属性,则此值为默认值。
'median'计算中位数值。
'sum'计算各值的总和。
'none'使用该值本身。每对 xy 值在该表中的实例数不能超过一个。使用矩阵数据时,此值为默认值。

如果您要计算自己的合计数据矩阵,请使用 accumarray 函数。指定矩阵作为 heatmap 函数的输入。

示例: h = heatmap(__,'ColorMethod','median')

示例: h.ColorMethod = 'median'

提示

  • 要以交互方式浏览热图中的数据,请使用以下选项。

    • 缩放 - 使用滚轮或 +- 键进行缩放。

    • 平移 - 点击并拖动热图或使用箭头键在行或列之间平移。

    • 数据提示 - 将光标悬停在热图上可显示数据提示。

    • 重新排列行和列 - 点击并拖动行或列标签可将其移动到其他位置。

    • 排序值 - 点击将光标悬停在行或列标签上时显示的图标。第一次点击按升序对值排序,第二次点击按降序对值排序,第三次点击将重置顺序。

兼容性考虑

全部展开

R2019a 中的行为有变化

在 R2017a 中推出