2017-07-30 73 views
1

我使用RGB紋理在一些surface s中在Matlab中可視化地圖疊加圖。它看起來像這樣:如何在Matlab繪圖圖例中放置一個顏色條圖標

matlab

我想有更好的傳奇圖標明確哪一層是。事情是這樣的:

Gimp

雖然我只是做在GIMP第二個,我想有它的代碼。

可能嗎?可以使用Matlab File Exchange等等。

+0

你在這個圖中使用哪個顏色映射?它看起來像是'灰色'和'噴射'的混合物。 – EBH

+0

這些是'表面(用'AlphaData'表示的頂部)和'Z'作爲零和'C'作爲RGB數據,我用jet中的'ind2rgb'生成。 – Laurenz

+0

你能否在你的回答中寫得更清楚?我不確定你在這裏描述了多少個變量。另外,爲什麼上圖中的「雷達重複投影」圖標看起來像是深紅色的矩形? – EBH

回答

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 

下面是結果:

enter image description here

這裏的問題是,傳說中的自定義顏色映射可以與數據的彩色地圖干擾本身,所以你可能也需要照顧,但我不能告訴你如何不知道你的數據是什麼樣子,你目前如何應用顏色映射。

+0

這工作很棒:)我用'cmap = [hleg.Color; bgcolor; ...'而不是'cmap = [1 1 1; 0 0 0; ...'所以我可以有'hleg.Color ='白色';'並保持泥濘的綠色作爲'bgcolor' – Laurenz

+0

太棒了!很高興聽到:)很高興幫助你。 – EBH

相關問題