Main Content

sortx

对热图行中的元素进行排序

说明

示例

sortx(h,row) 按升序(从左到右)显示 row 中的元素。此函数通过重新排列各个列,对行元素进行排序。可将 row 指定为 YData 中的一个元素或由元素组成的数组。如果您指定的第一行包含重复的值,则 sortx 根据第二行重新排列其余的列,依此类推。

示例

sortx(h,row,direction)(其中 direction'descend')按降序而不是升序(默认值)来对值排序。要对 row 中的每一行按不同的方向排序,请将 direction 指定为数组,数组的元素为 'ascend''descend'

sortx(___,'MissingPlacement',lcn) 指定将 NaN 元素放在排序顺序的开头还是末尾。将 lcn 指定为 'first''last''auto'。默认设置为 'auto',即升序时将 NaN 元素放在最后,降序时放在开头。在前面的任何输入参数组合之后使用此选项。

sortx(h) 按升序显示顶行中的元素。如果第一行包含重复的元素,则 sortx 根据第二行重新排列其余的列,依此类推。

示例

C = sortx(___) 以值矩阵的形式返回排序的颜色数据,值的显示方式与在热图中相同。

[C,x] = sortx(___) 还按照显示顺序返回排序的 x 值。

示例

全部折叠

创建一个电力中断热图,并对特定行中的值进行排序,使它们按升序从左到右显示。

首先创建一个热图。将示例文件 outages.csv 读入到表中。示例文件包含表示美国电力中断情况的数据。该表包含六列:RegionOutageTimeLossCustomersRestorationTimeCause。创建一个热图,x 轴显示不同的区域,y 轴显示不同的停电原因。在每个单元格中,显示每个区域由于特定原因经历停电的次数。

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

'winter storm' 行中的值进行排序,使它们按升序从左到右显示。

sortx(h,'winter storm')

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

创建一个电力中断热图,并通过重新排列各列,按降序显示 'winter storm' 行中的值。

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
sortx(h,'winter storm','descend')

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

创建一个电力中断热图,并使用多个行中的值重新排列各列。对列进行排序,使 'unknown' 行按升序显示。由于该行包含重复的值,因此使用 'earthquake' 行对其余的列进行排序。

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
sortx(h,{'unknown','earthquake'})

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

创建一个电力中断热图,并对 'winter storm' 行中的值进行排序,使它们按升序显示。按照 x 轴上的显示顺序返回排序的颜色数据和列值(x 值)。

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
[C,x] = sortx(h,'winter storm')

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

C = 10×5

     0    12   127    20   135
     0     0     1     0     1
     8    19    49    81    31
     2     9    85    42    18
     0     0    17     3     5
     6    31    23   135   143
     6    32     7    54   102
     0     5     4     4    11
     3    16    22    13    41
     1    18    19    37    70

x = 5x1 cell
    {'SouthWest'}
    {'MidWest'  }
    {'West'     }
    {'SouthEast'}
    {'NorthEast'}

创建一个电力中断热图,并通过重新排列各列,按升序对顶行中的值进行排序。然后还原原始顺序。

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
sortx(h)

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

通过将 HeatmapChart 对象的 XDisplayData 属性设置为等于 XData 属性来还原原始列顺序。

h.XDisplayData = h.XData;

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

输入参数

全部折叠

要更新的热图,指定为 HeatmapChart 对象。

要排序的行,指定为字符向量、字符向量元胞数组或字符串数组,指示 HeatmapChart 对象的 YDataYDisplayData 属性中的一个或多个元素。

示例: sortx(h,'MyRowName') 按升序排列 'MyRowName' 行中的元素。

排序方向,指定为下列值之一:

  • 'ascend' - 按降序排列 row 中的所有行。

  • 'descend' - 按降序排列 row 中的所有行。

  • 数组 - 对 row 中的每一行按不同的方向排序。可将 direction 指定为包含元素 'ascend''descend' 的字符向量元胞数组或字符串数组。数组的长度必须与 row 相同。

示例: sortx(h,row,{'ascend','descend','ascend'}) 按升序排列 row 的第一行中的元素。如果第一行包含重复的值,则继续使用第二行的元素按降序排列,以此类推。

NaN 位置,指定为下列值之一:

  • 'auto' - 升序时将 NaN 元素放在最后,降序时放在开头。

  • 'first' - 将 NaN 元素放在开头。

  • 'last' - 将 NaN 元素放在最后。

示例: sortx(h,row,'MissingPlacement','last')

输出参数

全部折叠

排序的颜色数据,以矩阵形式返回。矩阵中值的显示顺序与热图中的顺序相同。

排序的颜色数据存储在 HeatmapChart 对象的 ColorDisplayData 属性中。未排序的颜色数据存储在 ColorData 属性中。

重新排列的列顺序,以字符向量元胞数组形式返回。

排序的列顺序存储在 HeatmapChart 对象的 XDisplayData 属性中。未排序的列顺序存储在 XData 属性中。

算法

sortx 函数可以设置和查询以下 HeatmapChart 对象属性:

  • XDisplayData - 用于存储 x 轴数据的属性。

  • ColorDisplayData - 用于存储颜色显示数据的属性。

sortx 函数还可以重置 XLimits 属性。

版本历史记录

在 R2017b 中推出

另请参阅

函数

属性