是否可以在MATLAB中创建自定义热图?

时间:2018-02-03 02:25:26

标签: matlab

我想知道是否可以在MATLAB中创建自定义热图。我的意思是,如果可以将图像叠加到MATLAB上(在这种情况下图像将是我所处的状态)并在地图的特定区域产生热色。如果是,请发给我一个链接,我可以自学如何制作脚本。

1 个答案:

答案 0 :(得分:3)

完全可能!这里的说明:https://www.mathworks.com/help/thingspeak/create-heatmap-overlay-image.html

第一步是读取图像文件并将其显示在您正在形成的“图形”上。此步骤的详细链接如下:

picture = imread('https://www.mathworks.com/help/examples/optim/win64/officeassign_01.png');
[height,width,depth] = size(picture);
imshow(picture);
hold on

对于你而言,假设你已经拥有状态图,下一步将会变得有点棘手:你将不得不知道你希望将热量映射到的x,y位置以及这些点的强度。您将需要叠加,无论是块(如网格)还是平滑地图。我假设您需要一些平滑处理,因此您将在点之间使用线性插值。一旦确定了x,y,热强度映射,就可以执行以下操作:

OverlayImage=[];
F = scatteredInterpolant(Y, X, strengthPercent,'linear');
for i = 1:height-1
   for j = 1:width-1
          OverlayImage(i,j) = F(i,j);
   end
end
alpha = (~isnan(OverlayImage))*0.6;

为了解构他们在这里所做的事情,他们首先做了一个空的叠加。然后,他们使用线性插值制作了一个在点之间“混合”的地图。最后,他们制作了一个α层,这是该强度的一小部分。

最后也是最重要的一步 - 对你要做的事情更重要 - 就是将热量矩阵的“图像”放在实际图像上:

OverlayImage = imshow( OverlayImage );
% Set the color limits to be relative to the data values
caxis auto  
colormap( OverlayImage.Parent, jet );
colorbar( OverlayImage.Parent );
% Set the AlphaData to be the transparency matrix created earlier
set( OverlayImage, 'AlphaData', alpha );

最后一行设置图层的透明度(到alpha),允许在热图下查看图像。实际上,结合第一个代码块,这两个步骤应该为您设置。如果您需要任何帮助,请告诉我们!

相关问题