[英]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.