Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在clustergram中以编程方式启用colorbar_Matlab_Matlab Figure - Fatal编程技术网

Matlab 在clustergram中以编程方式启用colorbar

Matlab 在clustergram中以编程方式启用colorbar,matlab,matlab-figure,Matlab,Matlab Figure,我知道可以通过单击clustergramGUI中的colorbar图标来插入colorbar。有没有一种方法可以通过编程实现? 我试过了 这将在新的图形窗口中创建一个颜色栏。如何在点击按钮的情况下在clustergram图中正确定位创建色条?有一个隐藏的函数(HeatMap.plot>showColorbar),它将色条整齐地定位在热图和密度图(线)的左侧。只要运行colorbar(…)就会弄乱密度图和热图的相对位置。因此,您需要以某种方式运行回调或小心地复制所有位置计算。只运行回调更容易。这是

我知道可以通过单击
clustergram
GUI中的colorbar图标来插入colorbar。有没有一种方法可以通过编程实现? 我试过了


这将在新的图形窗口中创建一个颜色栏。如何在点击按钮的情况下在
clustergram
图中正确定位创建色条?

有一个隐藏的函数(
HeatMap.plot>showColorbar
),它将
色条整齐地定位在热图和密度图(线)的左侧。只要运行
colorbar(…)
就会弄乱密度图和热图的相对位置。因此,您需要以某种方式运行回调或小心地复制所有位置计算。只运行回调更容易。这是怎么做的

要以编程方式为
clustergram
创建
colorbar
,并保持颜色栏按钮的同步,需要使用按钮分配的回调并设置按钮的状态

创建
聚类图

load filteredyeastdata
cgo = clustergram(yeastvalues(1:30,:),'Standardize','Row');
获取颜色栏按钮的句柄:

cbButton = findall(gcf,'tag','HMInsertColorbar');
获取按钮的回调(
单击回调
):

ccb = get(cbButton,'ClickedCallback')
ccb = 
    @insertColorbarCB
    [1x1 clustergram]
这为我们提供了回调(
@insertColorbarCB
)分配的函数句柄,以及函数的第三个输入参数(
clustergram
对象)。按钮的句柄和空事件对象隐式地是前两个参数

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

运行回调以创建颜色栏:

ccb{1}(cbButton,[],ccb{2})

请注意,必须先将按钮
状态更改为
'on'
,否则回调将不起任何作用。

我刚刚设法解决了这个问题。 我所做的:

我将此函数添加到clustergram代码中(我将其放在第1486行)

然后在clustergram.m文件的第415行,我添加了这行代码

插入式彩色遥控器(obj)

调用上述函数。保存并运行:一旦绘制了聚类图,颜色条将始终存在。 以前的方法对我不起作用,所以我做了这个变通方法。
您甚至可以将新的clustergram代码保存为ClusterGramM,这样您就可以用两种方式绘制cgram。

颜色栏与您的计算机中的clustergram图相同code@lennon310这很奇怪,在我的两台运行64位2013b的电脑上,它显示在不同的图形窗口中…对我来说,它显示在同一个图形中,但无论指定了什么位置,它都会弄乱密度图和热图的位置。在
HeatMap.plot>showColorbar
(toolbox/bioinfo/microarray/@HeatMap/plot.m)中有很多逻辑,只是为了得到正确的位置。
set(cbButton,'State','on')
ccb{1}(cbButton,[],ccb{2})
    %%%%%%%%%%%%%%

    function insertColorbarCBALWAYS(obj)

         hFig= gcbf;

         obj.Colorbar = true;

    end
    %%%%%%%%%%%%%%%