matlab - 向热图添加滑块 - 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)
实际上有一种方法/解决方法可以在热图上使用滑块吗?谢谢!
解决方案
有。但我认为你不能为此使用 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。
推荐阅读
- mongodb - 使用 mongorestore 从 Atlas 恢复 MongoDb 存档
- javascript - HTML CSS Toggle div opacity
- python - 根据另一个值从 DataFrame 中提取一个值
- r - 使用函数 rbind “名称与以前的名称不匹配”的 R 中的错误
- visual-studio - 如何在 Visual Studio 中使用 Cmake 设置 Intel IPP?
- fiware - 通过 RPM 安装 Cygnus:存储库问题
- powershell - Powershell通过按升序替换n个字符来重命名文件名
- linux - QBluetooth BLE 广告在 ubuntu (BlueZ) 上不起作用
- sql - 借方贷方余额和期初余额计算
- c# - 使用 MsTest 的 Moq 静态隐式运算符