添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

heatmap

创建热图

全页折叠
  • Heatmap chart

说明

示例

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

示例

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 数据集,并基于加载到工作区中的变量子集创建一个表。然后创建一个热图,计算具有一组相同 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';

自 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)")

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'})

父容器,指定为 Figure Panel Tab TiledChartLayout GridLayout 对象。

名称-值参数

将可选的参量对组指定为 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 属性,而是计算每对 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'

输出参量

全部折叠

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

详细信息

全部折叠

独立可视化

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

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

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

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

提示

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

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

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

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

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

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

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

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

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

版本历史记录

在 R2017a 中推出

全部展开

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.