我有尺寸为D x D x N的 3D 矩阵。我想创建一个动态热图来显示它在N上的变化。这是我用来实现此目的的 MATLAB 代码。
for n=1:N
heatmap(dynamicCov(:,:,n));
pause(0.5);
end
此代码的问题在于,对于每个n,它都会打开一个新的图形窗口。我希望它在同一个热图窗口中更新。有可能这样做吗?有没有其他方法可以实现这一目标?
谢谢。
我有尺寸为D x D x N的 3D 矩阵。我想创建一个动态热图来显示它在N上的变化。这是我用来实现此目的的 MATLAB 代码。
for n=1:N
heatmap(dynamicCov(:,:,n));
pause(0.5);
end
此代码的问题在于,对于每个n,它都会打开一个新的图形窗口。我希望它在同一个热图窗口中更新。有可能这样做吗?有没有其他方法可以实现这一目标?
谢谢。
您需要使用 HeatMap 的未记录的第二个输入来指示是否应创建绘图,并使用其他一些 Handle Graphics 技巧来获取所创建图形的句柄。就像是
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