如何在 matlab 中的图像上绘制 3D 热图或直方图?
How to plot a 3D heatmap or histogram over an image in matlab?
我有这种类型的数据:
Data = [1:1:9; 1 2 3 4 5 6 7 8 9; 1 2 3 4 5 6 7 8 9 ;1 2 3 4 5 6 7 8 9;1 2 3 4 5 6 7 8 9];
第一个条目是感兴趣的区域(总共 9 个区域),其余 4 个数组条目是某物在该区域中停留的时间(现在对于这个问题来说只是任意的。
我想以 3d "heatmap" 样式图的形式绘制地图图片上每个区域中的每个事物的长度。地图分为 3x3 网格,如下所示:
1 2 3
4 5 6
7 8 9
我该如何绘制它?我已经尝试了轮廓和冲浪功能,但我不确定如何将它们映射到网格。作为我的最后一步,我想将图表叠加在地图图片上,但只要把图表放在上面 运行 就太好了!
您可以使用 imagesc
2D 版本或 bar3
3D 版本,在本例中我创建了一些子图,当然您可以自由更改此选项。
Data = [1:1:9; 1 2 3 4 5 6 7 8 9; 1 2 3 4 5 6 7 8 9 ;1 2 3 4 5 6 7 8 9;1 2 3 4 5 6 7 8 9];
M = zeros(3,3);
2D
for ii = 2:size(Data,1)
subplot(2,2,ii-1)
M(1:end) = Data(ii,:);
imagesc(M)
colormap jet
shading flat %for an exact result
% shading interp %for a smooth result
end
figure
3D(虽然我觉得3D视图没什么用)
for ii = 2:size(Data,1)
subplot(2,2,ii-1)
M(1:end) = Data(ii,:);
h{ii} = bar3(M)
colorbar
for k = 1:length(h{ii})
zdata = h{ii}(k).ZData;
h{ii}(k).CData = zdata;
h{ii}(k).FaceColor = 'interp';
end
end
我不确定这是否是您想要的那种绘图,但您可以使用 Delaunay 三角剖分将持续时间数据映射为网格点上的表面。 MatLab 文件交换有一个很好的功能,可以使用这种方法映射某些东西。
我有这种类型的数据:
Data = [1:1:9; 1 2 3 4 5 6 7 8 9; 1 2 3 4 5 6 7 8 9 ;1 2 3 4 5 6 7 8 9;1 2 3 4 5 6 7 8 9];
第一个条目是感兴趣的区域(总共 9 个区域),其余 4 个数组条目是某物在该区域中停留的时间(现在对于这个问题来说只是任意的。
我想以 3d "heatmap" 样式图的形式绘制地图图片上每个区域中的每个事物的长度。地图分为 3x3 网格,如下所示:
1 2 3
4 5 6
7 8 9
我该如何绘制它?我已经尝试了轮廓和冲浪功能,但我不确定如何将它们映射到网格。作为我的最后一步,我想将图表叠加在地图图片上,但只要把图表放在上面 运行 就太好了!
您可以使用 imagesc
2D 版本或 bar3
3D 版本,在本例中我创建了一些子图,当然您可以自由更改此选项。
Data = [1:1:9; 1 2 3 4 5 6 7 8 9; 1 2 3 4 5 6 7 8 9 ;1 2 3 4 5 6 7 8 9;1 2 3 4 5 6 7 8 9];
M = zeros(3,3);
2D
for ii = 2:size(Data,1)
subplot(2,2,ii-1)
M(1:end) = Data(ii,:);
imagesc(M)
colormap jet
shading flat %for an exact result
% shading interp %for a smooth result
end
figure
3D(虽然我觉得3D视图没什么用)
for ii = 2:size(Data,1)
subplot(2,2,ii-1)
M(1:end) = Data(ii,:);
h{ii} = bar3(M)
colorbar
for k = 1:length(h{ii})
zdata = h{ii}(k).ZData;
h{ii}(k).CData = zdata;
h{ii}(k).FaceColor = 'interp';
end
end
我不确定这是否是您想要的那种绘图,但您可以使用 Delaunay 三角剖分将持续时间数据映射为网格点上的表面。 MatLab 文件交换有一个很好的功能,可以使用这种方法映射某些东西。