MATLAB:动态热图

MATLAB:动态热图,matlab,plot,visualization,data-visualization,Matlab,Plot,Visualization,Data Visualization,我有三维矩阵的尺寸dxdxn。我想创建一个动态热图来显示它在N上的变化。这是我用来实现这一点的MATLAB代码 for n=1:N heatmap(dynamicCov(:,:,n)); pause(0.5); end 该代码的问题在于,对于每个n,它都会打开一个新的图形窗口。我希望它在相同的热图窗口中更新。有可能吗?有没有其他方法可以做到这一点 谢谢。您需要使用未记录的第二个输入到热图,指示是否应创建绘图,以及一些其他句柄图形技巧来获得所创建图形的句柄。差不多 data =

我有三维矩阵的尺寸dxdxn。我想创建一个动态热图来显示它在N上的变化。这是我用来实现这一点的MATLAB代码

for n=1:N
    heatmap(dynamicCov(:,:,n));
    pause(0.5);
end
该代码的问题在于,对于每个n,它都会打开一个新的图形窗口。我希望它在相同的热图窗口中更新。有可能吗?有没有其他方法可以做到这一点


谢谢。

您需要使用未记录的第二个输入到热图,指示是否应创建绘图,以及一些其他句柄图形技巧来获得所创建图形的句柄。差不多

data = rand(20,20,10); % create test data
hmo = HeatMap(data(:,:,1),false); % create but do not plot
plot(hmo); % do the plot
allHFig = findall(0,'Type','figure'); % get handle to all open figures
hFig = allHFig(1); % we want the most recently created figure
for idx = 2:size(data,3)
   hmo = HeatMap(data(:,:,idx),false); % create heatmap but do not plot
   plot(hmo,hFig); % plot to our existing figure
   pause(0.5);
end

我找到了一个更好更简单的方法。它使用内置的
imagesc()
函数,而不是生物信息学工具箱中的
HeatMap()
函数。代码如下:

dynamicCov = rand(20,20,10); % create test data
N = size(dynamicCov,3);


for n=1:N
    imagesc(dynamicCov(:,:,n));
    colormap('copper');
    colorbar;
    pause(0.5);
end

参考资料:

在热图(dynamicCov(:,:,n))前添加图(1)。“应该可以了。”帕拉格谢谢你的评论,但它不起作用。它会为每个n打开一个名为“热图n”的新窗口。您必须查看热图如何显示
obj
。据我所知,它有一个方法视图,并在该方法中绘制它。所以,如果你能找到一种方法来传递一个数字句柄,它应该会起作用。谢谢。您的答案进行了小编辑,即在第2行中,我必须删除参数“false”,并删除第3行-
绘图(hmo)