如何在 Matlab 绘图图例中放置颜色条图标

Posted

技术标签:

【中文标题】如何在 Matlab 绘图图例中放置颜色条图标【英文标题】:How to place a colorbar in Matlab plot legend Icon 【发布时间】:2018-01-05 20:47:07 【问题描述】:

我在 Matlab 中使用带有 RGB 纹理的一些 surfaces 可视化地图叠加层。它看起来像这样:

我希望有更好的图例图标来明确哪个图层是哪个图层。像这样的:

虽然我刚刚在 Gimp 中做了第二个,但我想在代码中使用它。

有可能吗?使用 Matlab File Exchange 中的东西就可以了。

【问题讨论】:

你在这个图中使用了哪个颜色图?这似乎是grayjet 的混合体。 你能在你的答案中更清楚地写下这个吗?我不确定你在这里描述了多少变量。另外,为什么上图中的“雷达重投影”图标看起来像一个深红色的矩形? 图的内容无所谓,我只是想修改图例的“图标”。不知道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 绘图图例中放置颜色条图标的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中给figure添加图例(legend),标题(title)和颜色(color)

matlab中如何调整legend的位置?

matlab中画图线型怎么设置

如何使 ggplot2 中的图例与我的情节高度相同?

如何在rails提交按钮中放置图标

如何通过指令将matlab的legend设置在图的左上方