我在Matlab中可视化地图叠加,其中一些surface
具有RGB纹理。它看起来像这样:
我想有更好的传奇图标,清楚哪一层是哪一层。像这样:
虽然我刚刚在Gimp中完成了第二个,但我想在代码中使用它。
有可能吗?可以使用Matlab File Exchange中的东西。
答案 0 :(得分:1)
一种选择是“吸引”'创建图形后,手动的这部分图例。以下是如何做到这一点:
plot(nan(2)) % this is to make space in the legend box
hold on
plot(rand(15,1),'r') % here you plot all your data
hold off
hleg = legend({'Lidar Map','Radar Reprojection','Robot Path'});
% get the position of the legend, and calculate the place for the colormaps:
% this values may need to be adjusted
pos = hleg.Position.*[1.01 1+hleg.Position(4)/2.3 0.27 0.6];
% Create a 'picture' of what you want to appear in the legend:
level = 64; % level of color in the colormaps
cb = [1:level; zeros(1,level); (1:level)+level];
cmap = [1 1 1;0 0 0;flipud(gray(level-1)); jet(level)]; % custom colormap
legax = axes('Position',pos); % place the new picture above the legend
imagesc(legax,repelem(cb,[3 1 3],1)) % Create the picture
colormap(cmap) % appy custom colormap
axis off % remove all axes details
结果如下:
这里的问题是图例的自定义颜色贴图可能会干扰数据本身的颜色贴图,因此您可能还需要处理它,但我无法告诉您如何不知道如何您的数据看起来如何,以及您目前如何应用色彩映射。