首页 > 解决方案 > 向热图添加滑块 - MATLAB

问题描述

我正在处理一个 3D 双倍,我想逐片可视化它。为此,我尝试绘制热图,然后添加一个滑块来选择第三维的索引。但是,我收到以下错误: Error using uislider (line XX) HeatmapChart cannot be a parent.

重现我的问题的最小示例:

% Generate dummy 3d array
img = ones(5,4,3);
for ii=1:size(img,3)
    img(:,:,ii)=ii;
end
% Try plotting heatmap with slider
h = heatmap(img(:,:,1));
uislider(h)

实际上有一种方法/解决方法可以在热图上使用滑块吗?谢谢!

标签: matlabsliderheatmap

解决方案


有。但我认为你不能为此使用 uislider。尝试:

h = heatmap(img(:,:,1));
uicontrol('Style','slider');

此滑块具有类似的功能,但看起来不太好。您仍然可以定义 Min、Max、Color... 并实现 Callback 函数。

最后它可能看起来像:

h = heatmap(img(:,:,1));
uicontrol('Style','slider','Value',1,'Min',1,'Max',size(img,3),...
          'SliderStep',[0.5 0.5],'CallBack',{@SlideThroughSlices,img})

function SlideThroughSlices(slider,~,img)

   heatmap(img(:,:,slider.Value));

end

假设第三个维度的大小img是3。否则你必须调整Min、Max和SliderStep。


推荐阅读