繁体   English   中英

如何在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“热图”样式图。 地图分为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 Triangulation将持续时间数据映射为网格点上的曲面。 MatLab文件交换具有很好的功能,可以使用此方法映射内容。

从散布数据制作表面图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM