heatmap
创建热图
语法
说明
表数据
矩阵数据
其他选项
heatmap(___,
使用一个或多个名称-值对组参量指定热图的其他选项。请在所有其他输入参量之后指定这些选项。有关属性列表,请参阅 HeatmapChart 属性。Name,Value
)
heatmap(
在由 parent
,___)parent
指定的图窗、面板或选项卡上创建热图。
返回 h
= heatmap(___)HeatmapChart
对象。创建图后,使用 h
修改图属性。有关属性列表,请参阅 HeatmapChart 属性。
示例
基于表格数据创建热图
基于内科病人数据表创建一个热图。
加载 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';
对标题中的希腊字母使用 LaTeX
自 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
读入到表中。示例文件中包含表示美国电力中断事故的数据。该表包含六列:Region
、OutageTime
、Loss
、Customers
、RestorationTime
和 Cause
。显示每一列的前五行。
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
读入到表中。该文件包含四个列:Year
、Month
、Day
和 TemperatureF
。
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)")
比较包含不同颜色数的热图
默认情况下,热图使用 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))
输入参数
tbl
— 源表
表 | 时间表
源表,以表或时间表的形式指定。
您可以使用 table
函数根据工作区变量创建表,也可以使用 readtable
函数以表的形式导入数据。您可以使用 timetable
函数根据工作区变量创建时间表。
源表存储在 HeatmapChart
对象的 SourceTable
属性中。
xvar
— x 轴的表变量
字符向量 | 字符串标量 | 数值标量 | 逻辑向量
x 轴的表变量,指定为下列形式之一:
指示变量名称之一的字符向量或字符串标量。例如,
heatmap(tbl,'HealthStatus','Gender')
为 x 轴选择名为'HealthStatus'
的变量。指示表变量索引的数值标量。例如,
heatmap(tbl,2,3)
为 x 轴选择表中的第二个变量。包含一个
true
元素的逻辑向量。
与表变量关联的值必须组合为 categorical
函数能够接受的有限离散类别集合。如果这些值没有组合为有限类别集合,请使用 discretize
函数将它们组合在一起。
x 轴上显示的标签按字母顺序排列。您可以使用分类数组自定义标签。有关示例,请参阅基于表格数据创建热图。
选定变量存储在 HeatmapChart
对象的 XVariable
属性中。
yvar
— y 轴的表变量
字符向量 | 字符串标量 | 数值标量 | 逻辑向量
y 轴的表变量,指定为下列形式之一:
指示变量名称之一的字符向量或字符串标量。例如,
heatmap(tbl,'HealthStatus','Gender')
为 y 轴选择名为'Gender'
的变量。指示表变量索引的数值标量。例如,
heatmap(tbl,2,3)
为 y 轴选择表中的第三个变量。包含一个
true
元素的逻辑向量。
与表变量关联的值必须组合为 categorical
函数能够接受的有限离散类别集合。如果这些值没有组合为有限类别集合,请使用 discretize
函数将它们组合在一起。
y 轴上显示的标签按字母顺序排列。您可以使用分类数组自定义标签。有关示例,请参阅基于表格数据创建热图。
选定变量存储在 HeatmapChart
对象的 YVariable
属性中。
cvar
— 颜色数据的表变量
字符向量 | 字符串标量 | 数值标量 | 逻辑向量
颜色数据的表变量,指定为下列形式之一:
指示变量名称之一的字符向量或字符串标量。例如,
heatmap(__,'ColorVariable','HealthStatus')
为 y 轴选择名为'HealthStatus'
的变量。指示表变量索引的数值标量。例如,
heatmap(__,'ColorVariable',1)
为 y 轴选择表中的第三个变量。包含一个
true
元素的逻辑向量。
与表变量关联的值必须为数值类型或 logical
类型。
使用矩阵数据时,属性值为空 []
。选定变量存储在 HeatmapChart
对象的 ColorVariable
属性中。ColorData
属性使用基于选定变量的数据进行填充。
默认情况下,heatmap
基于均值聚合方法来计算颜色数据。要更改计算方法,请设置 ColorMethod
属性。
cdata
— 颜色数据
矩阵
热图单元格的颜色数据,指定为矩阵。
这些值存储在 HeatmapChart
对象的 ColorData
属性中。
示例: [40 24 68; 68 37 58; 49 23 46]
xvalues
— x 轴上显示的值
分类数组 | 字符串数组 | 数值数组 | 字符向量元胞数组
x 轴上显示的值,指定为分类数组、字符串数组、数值数组或字符向量元胞数组。
示例: {'small','medium','large'}
示例: categorical({'small','medium','large'})
yvalues
— y 轴上显示的值
分类数组 | 字符串数组 | 数值数组 | 字符向量元胞数组
y 轴上显示的值,指定为分类数组、字符串数组、数值数组或字符向量元胞数组。
示例: {'small','medium','large'}
示例: categorical({'small','medium','large'})
parent
— 父容器
Figure
对象 | Panel
对象 | Tab
对象 | TiledChartLayout
对象 | GridLayout
对象
父容器,指定为 Figure
、Panel
、Tab
、TiledChartLayout
或 GridLayout
对象。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: heatmap(tbl,xvar,yvar,'ColorVariable','Temperatures','ColorMethod','median')
注意
此处所列的属性只是一部分。有关完整列表,请参阅 HeatmapChart 属性。
Title
— 图标题
字符向量 | 字符向量元胞数组 | 字符串数组 | 分类数组
图标题,指定为字符向量、字符向量元胞数组、字符串数组或分类数组。
示例: h = heatmap(rand(10,10),'Title','My Title Text')
示例: h.Title = 'My Title Text';
要创建一个多行标题,请指定字符向量元胞数组或字符串数组。数组中的每个元素对应一行文本。
示例: h.Title = {'My','Title'};
如果将标题指定为分类数组,MATLAB® 将使用数组中的值,而不是类别。
如果使用表格数据创建图,默认图具有自动生成的标题。如果您不需要标题,请指定 ''
。
默认情况下,热图支持对您指定的文本使用某些 TeX 标记。使用 TeX 标记可添加下标和上标,修改字体类型和颜色,并在文本中包括特殊字符。如果要在常规文本中使用 TeX 标记字符,如下划线 (_),请在要包含的字符前插入反斜杠 (\)。反斜杠是 TeX 转义字符。有关详细信息,请参阅文本对象的Interpreter属性。
ColorMethod
— 用来计算颜色数据的方法
'count'
| 'mean'
| 'median'
| 'sum'
| 'max'
| 'min'
| 'none'
用来计算颜色数据值(存储在 ColorData
中)的方法,指定为 'count'
、'mean'
、'median'
、'sum'
、'max'
、'min'
或 'none'
。
如果您不想使用颜色数据表中的第三个变量,则将方法指定为 'count'
。当方法为 'count'
时,热图不使用 ColorVariable
属性,而是计算每对 x 和 y 值出现在源表中的次数。当您使用表格数据而没有指定 ColorVariable
参数时,此值为默认值。
如果您要使用颜色数据表中的第三个变量,请将 ColorVariable
属性设置为要使用的变量,并将 ColorMethod
属性指定为下表中列出的方法之一。对于每对 x 和 y 值,这些方法使用源表的 ColorVariable
列中的对应值来计算数据。
方法 | 描述 |
---|---|
'mean' | 计算平均值。如果指定 ColorVariable 属性,则此值为默认值。 |
'median' | 计算中位数值。 |
'sum' | 计算各值的总和。 |
'max' | 使用最大值。 |
'min' | 使用最小值。 |
'none' | 使用该值本身。每对 x 和 y 值在该表中的实例数不能超过一个。使用矩阵数据时,此值为默认值。 |
如果您要计算自己的合计数据矩阵,请使用 accumarray
函数。指定矩阵作为 heatmap
函数的输入。
示例: h = heatmap(__,'ColorMethod','median')
示例: h.ColorMethod = 'median'
详细信息
独立可视化
独立可视化是出于特殊目的设计的图,其工作方式独立于其他图。与 plot
和 surf
等其他图不同,独立可视化内置一个预配置的坐标区对象,并且某些自定义不可用。独立可视化还具有以下特性:
它无法与其他图形元素(如线条、补片或曲面)组合。因此,不支持
hold
命令。gca
函数可以将图对象返回为当前坐标区。您可以将图对象传递给许多 MATLAB 函数,这些函数接受坐标区对象作为输入参量。例如,您可以将图对象传递给
title
函数。
提示
要以交互方式浏览热图中的数据,请使用以下选项。
缩放 - 使用滚轮或 + 和 - 键进行缩放。
平移 - 点击并拖动热图或使用箭头键在行或列之间平移。
数据提示 - 将光标悬停在热图上可显示数据提示。
重新排列行和列 - 点击并拖动行或列标签可将其移动到其他位置。
排序值 - 点击将光标悬停在行或列标签上时显示的图标。第一次点击按升序对值排序,第二次点击按降序对值排序,第三次点击将重置顺序。
如果基于表创建热图,则可以自定义其数据提示。
要在数据提示中添加或删除行,请右键点击图上的任意位置,然后指向修改数据提示。然后,选择或取消选择一个变量。
要添加或删除多行,请右键点击图,指向修改数据提示,然后选择更多。然后,通过点击 >> 添加变量,或通过点击 << 删除变量。
版本历史记录
在 R2017a 中推出R2019a: 热图使用 TeX 标记解释文本
从 R2019a 开始,热图使用 TeX 标记解释文本,而不是显示字面字符。如果要在常规文本中使用 TeX 标记字符,如下划线 (_),请在要包含的字符前插入反斜杠 (\)。反斜杠是 TeX 转义字符。有关使用 TeX 标记的详细信息,请参阅文本对象的 Interpreter 属性。
另请参阅
函数
属性
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)