首页 > 解决方案 > 如何更改 MATLAB clustergram 的轴起始角

问题描述

我使用clustergram()MATLAB 2016a 中的函数生成了下面的 clustergram。我展示的是一个相关矩阵,所以行标签和列标签是相同的,但是由于 MATLAB 开始轴的位置,块结构从右上角到左下角,而我希望它从左上角到右下角(这就是我们通常在矩阵中显示块)。我怎样才能做到这一点?我检查了 clustergram() 函数的参数,但看不到任何更改轴起始角的参数。

只要标签根据相关值进行聚类,我就可以不用树状图。

这是我生成clustergram的代码:

cgo = clustergram(corr(values));

我还使用以下方法添加行和列标签(图中未显示):

set(cgo, 'RowLabels', labels);
set(cgo, 'ColumnLabels', labels);

在此处输入图像描述

标签: matlabhierarchical-clusteringdendrogram

解决方案


这是我自己的解决方案。我将以下代码添加到问题中的代码中。这基本上从 clustergram 获取排序,将其关闭,然后使用检索到的排序来创建热图imagesc(),因为imagesc()以我想要的方式创建矩阵,如下所示:

ordering = get(cgo, 'RowLabels');
[~, ind] = ismember(get(cgo, 'RowLabels'), labels);
close all hidden
colormap jet
imagesc(c(ind, ind))
set(gca, 'Ticklength', [0 0])
set(gca, 'YTick', 1:length(ind), 'YTickLabel', labels(ind));

在此处输入图像描述


推荐阅读