代码之家  ›  专栏  ›  技术社区  ›  user5054

如何改变MATLAB聚类图的轴起始角

  •  0
  • user5054  · 技术社区  · 6 年前

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

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

    以下是生成聚类图的代码:

    cgo = clustergram(corr(values));
    

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

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

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   user5054    6 年前

    这是我自己的解决办法。我在下面的问题中添加了代码。这基本上是从clustergram获取排序,关闭它,然后使用检索到的排序创建热图 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));
    

    enter image description here