Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

sorty

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

说明

示例

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

示例

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

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

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

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

示例

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

示例

全部折叠

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

首先创建一个热图。将示例文件 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.

'NorthEast' 列中的值进行排序,使它们从上到下按升序显示。

sorty(h,'NorthEast')

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

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

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

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

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

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
sorty(h,{'SouthWest','NorthEast'})

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

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

T = readtable('outages.csv');
h = heatmap(T,'Region','Cause');
[C,y] = sorty(h,'NorthEast')

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

C = 10×5

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

y = 10x1 cell
    {'earthquake'      }
    {'fire'            }
    {'unknown'         }
    {'equipment fault' }
    {'energy emergency'}
    {'wind'            }
    {'winter storm'    }
    {'thunder storm'   }
    {'attack'          }
    {'severe storm'    }

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

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

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

通过将 HeatmapChart 对象的 YDisplayData 属性设置为等于 YData 属性来还原原始行顺序。

h.YDisplayData = h.YData;

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

输入参数

全部折叠

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

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

示例: sorty(h,'MyColumnName') 按升序排列 'MyColumnName' 列中的元素。

排序方向,指定为 'ascend''descend'、字符向量元胞数组或字符串数组。

  • 'ascend' - 按升序对 column 中列出的所有列进行排序。

  • 'descend' - 按降序对 column 中列出的所有列进行排序。

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

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

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

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

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

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

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

输出参数

全部折叠

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

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

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

排序的行顺序存储在 HeatmapChart 对象的 YDisplayData 属性中。未排序的行顺序存储在 YData 属性中。

算法

sorty 函数可以设置以下 HeatmapChart 对象属性:

  • YDisplayData - 用于存储 y 轴数据的属性。

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

sorty 函数还可以重置 YLimits 属性。

另请参阅

函数

属性

在 R2017b 中推出