簡體   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