2016-06-22 4 views
1

У меня есть этот тип данных:Как построить трехмерную карту тепла или гистограмму над изображением в 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» стиль участка Карта разделена на 3х3 примерно так:..

1 2 3 

4 5 6 

7 8 9 

Как это сделать? Я пробовал контур r и серфинга, но я не уверен, как я буду сопоставлять их с сеткой. Я хотел бы наложить график на изображение карты в качестве моего последнего шага, но просто получить график и запустить было бы здорово!

+0

как бы вы хотели, чтобы показать 4 различных вещей (назовем их A до D)? 4, где каждый имеет тепловую карту, или сумму их или трехмерный вид со сложенными плавающими поверхностями или любую другую определенную идею? – Finn

+0

@Finn Идеально как для визуализации того, как они выглядят. Итак, где A часто, а затем сводный график, где основные горячие точки были в целом для каждого A-D. –

ответ

0

Вы можете использовать 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 
+0

Что такое b в длину (b)? –

+0

Это была моя ошибка, так что теперь 'length (h {ii})' соответствует количеству элементов, которые составляют 3D-карту тепла. – obchardon

+0

2D-версия работает, но 3d дает ошибку в строке: zdata = h {ii} (k) .ZData; неправильная ссылка на индексную матрицу. Также есть ли способ в 2D-версии наложить номер сетки на график? вроде как: http://plato.stanford.edu/entries/consciousness-representational/NumberedGrid1.jpg. Причина, по которой мне нравится 3d, заключается в том, что я хочу запечатлеть их над изображением здания. что показывает, где все было в течение периода наблюдения. –

0

Я не уверен, если это вид сюжет, который вы хотите, но вы можете использовать триангуляцию Delaunay, чтобы отображать данные о продолжительности в виде поверхности поверх ваших точек сетки. Обмен файлами MatLab имеет хорошую функцию для сопоставления чего-либо с помощью этого метода.

Making Surface Plots from Scatter Data

+0

Это не похоже на то, что мне нужно. Моя основная проблема заключается в том, что я не знаю, как сделать этот график сетью 3x3, которую у меня есть. Он просто ставит 1-9 на ось и рисует вдоль нее, мне нужно, чтобы она помещала 1-3, 4-6, 7-9 на отдельные части фигуры, а затем закладывала в каждом из этих мест. –

 Смежные вопросы

  • Нет связанных вопросов^_^