我使用 clustergram() Matlab2016a中的函数。我显示的是一个相关矩阵,因此行和列标签是相同的,但是由于MATLAB从轴开始的位置,块结构从右上角到左下角,而我希望它从左上角到右下角(这是我们通常在矩阵中显示块的方式)。我怎样才能做到这一点?我检查了clustergram()函数的参数,但是我看不到任何改变轴起始角的参数。
clustergram()
我可以不使用树状图,只要标签是根据相关值进行聚类的。
以下是生成聚类图的代码:
cgo = clustergram(corr(values));
我还使用以下方法添加行和列标签(图中未显示):
set(cgo, 'RowLabels', labels); set(cgo, 'ColumnLabels', labels);
这是我自己的解决办法。我在下面的问题中添加了代码。这基本上是从clustergram获取排序,关闭它,然后使用检索到的排序创建热图 imagesc() ,自 图像C() 以我想要的方式创建矩阵,如下所示:
imagesc()
图像C()
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));