如何在 Matlab 绘图图例中放置颜色条图标
Posted
技术标签:
【中文标题】如何在 Matlab 绘图图例中放置颜色条图标【英文标题】:How to place a colorbar in Matlab plot legend Icon 【发布时间】:2018-01-05 20:47:07 【问题描述】:我在 Matlab 中使用带有 RGB 纹理的一些 surface
s 可视化地图叠加层。它看起来像这样:
我希望有更好的图例图标来明确哪个图层是哪个图层。像这样的:
虽然我刚刚在 Gimp 中做了第二个,但我想在代码中使用它。
有可能吗?使用 Matlab File Exchange 中的东西就可以了。
【问题讨论】:
你在这个图中使用了哪个颜色图?这似乎是gray
和jet
的混合体。
你能在你的答案中更清楚地写下这个吗?我不确定你在这里描述了多少变量。另外,为什么上图中的“雷达重投影”图标看起来像一个深红色的矩形?
图的内容无所谓,我只是想修改图例的“图标”。不知道Matlab为什么选择深红色来表示这个……可能是表面句柄中RGB-Value最高的吧?
它似乎采用了颜色图中间的颜色。试试这个:peaks(50), colormap jet, legend('peaks')
看看。
【参考方案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
结果如下:
这里的问题是图例的自定义颜色图可能会干扰数据本身的颜色图,因此您可能还需要注意这一点,但如果不知道您的数据如何,我无法告诉您如何看起来像以及您目前如何应用颜色图。
【讨论】:
这很好用 :) 我用cmap = [hleg.Color;bgcolor; ...
而不是 cmap = [1 1 1;0 0 0; ...
所以我可以拥有 hleg.Color = 'white';
并保持泥泞的绿色为 bgcolor
以上是关于如何在 Matlab 绘图图例中放置颜色条图标的主要内容,如果未能解决你的问题,请参考以下文章