我正在使用来自生物信息学工具箱(Ver3.7)的CLUSTERGRAM对象。MATLAB版本R2011a。
我想获得行的置换向量和集群图中的列,就像我可以使用树状图函数那样:
x = magic(10);
>> [~,~,permrows] = dendrogram(linkage(x,'average','euc'))
permrows =
9 10 6 7 8 1 2 4 5 3
>> [~,~,permcols] = dendrogram(linkage(x','average','euc'))
permcols =
6 7 8 9 2 1 3 4 5 10我发现聚类和树状图是不一样的,很可能是由于最优的叶序计算(我不想禁用它)。
例如,聚类图来自:
clustergram(x)('average'和'eucledian'是集群图的默认方法)
向量(如附图所示)应是:
permrows = [1 2 4 5 3 10 9 6 7 8];
permcols = [1 2 8 9 6 7 10 5 4 3];

那么,如何通过编程获得这些向量呢?有人很熟悉这个东西吗?
有人能提出一个好的替代方案吗?我知道我可以创建一个类似的图形,结合图像和树状图的函数,但是叶序在聚类图中要比在树状图中更好(最优)。
发布于 2012-06-14 16:40:17
从文档中可以看出,get(gco,'ColumnLabels')和get(gco,'RowLabels') (其中gco是集群对象)应该会给出重新排序的标签。注意,对应的set-methods以原始顺序接收标签并在内部重新排序。
因此,如果您使用了自定义标签(set(gco,'RowLabels',originalLabels))
[~,permrows] = ismember(get(gco,'RowLabels'),originalLabels)应该返回行排列。
https://stackoverflow.com/questions/11022051
复制相似问题