在clustergram中以编程方式打开colorbar

Cic*_*ici 3 matlab matlab-figure

我知道可以通过单击clustergramGUI中的颜色条图标来插入颜色条.有没有办法以编程方式进行?我试过了

cgo = clustergram(data)
colorbar;
Run Code Online (Sandbox Code Playgroud)

这会在新的图形窗口中生成一个颜色条.如何在clustergram图中正确定位颜色条,就像点击按钮一样?

cha*_*pjc 5

有一个功能被埋没(HeatMap.plot>showColorbar),它整齐地定位colorbar在热图和树形图(线条)的左侧.刚运行colorbar(...)会弄乱树形图和热图的相对位置.因此,您需要以某种方式运行回调或仔细复制所有位置计算.运行回调更容易.这是如何做.

要以colorbar编程方式为a 创建clustergram,并使颜色条按钮保持同步,您需要使用按钮指定的回调并设置按钮的状态.

创建clustergram:

load filteredyeastdata
cgo = clustergram(yeastvalues(1:30,:),'Standardize','Row');
Run Code Online (Sandbox Code Playgroud)

获取颜色条按钮的句柄:

cbButton = findall(gcf,'tag','HMInsertColorbar');
Run Code Online (Sandbox Code Playgroud)

获取ClickedCallback按钮的回调():

ccb = get(cbButton,'ClickedCallback')
ccb = 
    @insertColorbarCB
    [1x1 clustergram]
Run Code Online (Sandbox Code Playgroud)

这为我们提供了callback(@insertColorbarCB)赋值函数的句柄,以及函数的第三个输入参数(clustergram对象).按钮的句柄和空事件对象隐含地是前两个参数.

将按钮状态更改为'on'(单击):

set(cbButton,'State','on')
Run Code Online (Sandbox Code Playgroud)

运行回调以创建颜色栏:

ccb{1}(cbButton,[],ccb{2})
Run Code Online (Sandbox Code Playgroud)

请注意,State必须'on' 先将按钮更改为第一个,否则回调将不会执行任何操作.