Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

heatmap

创建热图

  • Heatmap chart

说明

表数据

heatmap(tbl,xvar,yvar) 通过聚合表 tbl 中的变量来创建一个热图。将 xvaryvar 指定为要可视化的表变量。单元格中的数字和默认颜色对应于每个 (x, y) 对组一起出现在表中的次数。生成的 x 轴和 y 轴分别显示 xvaryvar 变量中的唯一值。

示例

heatmap(tbl,xvar,yvar,'ColorVariable',cvar) 使用 cvar 指定的表变量来计算单元格中的数字和对应的颜色。默认计算方法是均值聚合,因此单元格编号和颜色基于一起出现在表中的每个 (x, y) 对组的 cvar 的平均值。

示例

矩阵数据

heatmap(cdata) 基于包含预聚合数据的二维矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。

示例

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

示例

其他选项

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

示例

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

h = heatmap(___) 返回 HeatmapChart 对象。创建图后,使用 h 修改图属性。有关属性列表,请参阅 HeatmapChart 属性

示例

全部折叠

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

加载 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';

自 R2023b 起

要在标题、轴标签或数据提示中使用 LaTeX(或 TeX)标记,请设置 HeatmapChart 对象的 Interpreter 属性。

例如,创建一个标题使用 LaTeX 显示希腊字母的热图。创建该图时,将 Interpreter 属性设置为 "latex"。然后在调用 title 函数时包含标记。

heatmap(randi(100,5,3),Interpreter="latex")
title("$\hat{\psi_1}$ Values for ${1\le\alpha\le3}$")

创建一个热图,并通过设置 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';

创建一个热图,并使用通过自定义聚合方法计算的数据为单元格着色。使用 pivot 函数计算颜色数据。

将示例文件 TemperatureData.csv 读入到表中。该文件包含四个列:YearMonthDayTemperatureF

tbl = readtable('TemperatureData.csv');

使用 pivot 函数计算颜色数据,作为每个月份和年份组合的最高温度。使用 NaN 表示缺失的月份和年份组合。

P = pivot(tbl,Columns="Month",Rows="Year",DataVariable="TemperatureF",Method=@(x) mean(x,"includenan"))
P=2×13 table
    Year    April     August    December    February    January     July      June     March      May      November    October    September
    ____    ______    ______    ________    ________    _______    ______    ______    ______    ______    ________    _______    _________

    2015    43.267    69.903     40.548      15.448     21.355     69.161    59.967    28.484    57.548      43.8      49.323      64.467  
    2016    42.267       NaN        NaN      29.966      27.71     68.824    63.733    37.806    53.806       NaN         NaN         NaN  

重新排列透视表中的变量。

P = P(:,["Year" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December"]);

创建热图,并使用计算的数据值为热图单元格着色。

xvar = P.Properties.VariableNames(2:end);
yvar = string(P.(1));
cvar = P{:,2:end};
heatmap(xvar,yvar,cvar)
title("Maximum Temperatures (F)")

Figure contains an object of type heatmap. The chart of type heatmap has title Maximum Temperatures (F).

默认情况下,热图使用 sky 颜色图的 256 采样。您可以通过指定 Colormap 名称-值参量来更改采样。

例如,在 2×1 分块图布局中创建两个热图。上图使用默认 256 种颜色,下图仅使用两种颜色。

tiledlayout(2,1,TileSpacing="compact")

% Top chart with default colors
nexttile
heatmap(magic(10))

% Bottom chart with two colors
nexttile
heatmap(magic(10),Colormap=sky(2))

输入参数

全部折叠

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

您可以使用 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 轴选择名为 'Gender' 的变量。

  • 指示表变量索引的数值标量。例如,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'})

父容器,指定为 FigurePanelTabTiledChartLayoutGridLayout 对象。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 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''max''min''none'

如果您不想使用颜色数据表中的第三个变量,则将方法指定为 'count'。当方法为 'count' 时,热图不使用 ColorVariable 属性,而是计算每对 xy 值出现在源表中的次数。当您使用表格数据而没有指定 ColorVariable 参数时,此值为默认值。

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

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

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

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

示例: h.ColorMethod = 'median'

输出参量

全部折叠

HeatmapChart 对象,它是一个独立可视化。创建热图后,使用 h 设置热图的属性。

详细信息

全部折叠

独立可视化

独立可视化是出于特殊目的设计的图,其工作方式独立于其他图。与 plotsurf 等其他图不同,独立可视化内置一个预配置的坐标区对象,并且某些自定义不可用。独立可视化还具有以下特性:

  • 它无法与其他图形元素(如线条、补片或曲面)组合。因此,不支持 hold 命令。

  • gca 函数可以将图对象返回为当前坐标区。

  • 您可以将图对象传递给许多 MATLAB 函数,这些函数接受坐标区对象作为输入参量。例如,您可以将图对象传递给 title 函数。

提示

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

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

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

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

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

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

  • 如果基于表创建热图,则可以自定义其数据提示。

    • 要在数据提示中添加或删除行,请右键点击图上的任意位置,然后指向修改数据提示。然后,选择或取消选择一个变量。

    • 要添加或删除多行,请右键点击图,指向修改数据提示,然后选择更多。然后,通过点击 >> 添加变量,或通过点击 << 删除变量。

版本历史记录

在 R2017a 中推出

全部展开