我想在Matlab图中的图例上放置一个箭头,但是当我添加箭头时,图例默认为“在顶部”(参见图片,图例中的黑线覆盖了该图)。
是否有一种方法可以将子图(例如箭头)推到“顶部”,使其出现在图的所有其他组件上,包括图例?我尝试使用uistack
,但似乎不适用于图例。 uistack
如文档所述,应“ 重新排列UI组件的可视堆栈”。
编辑:
一个非常简单的例子:我绘制的线条应该出现在图例的顶部。
figure;
b = bar(1:3,rand(3));
hold on;
p = plot([0,3],[0,.5],'Color','k','linewidth',1.5); % my arrow
l = legend(b,'value','Location','SouthWest','AutoUpdate','off');
uistack(l,'bottom');
答案 0 :(得分:2)
您可以使图例背景透明-这样您就可以在图例中看到箭头
figure;
b = bar(1:3,rand(3));
hold on;
p = plot([0,3],[0,.5],'Color','k','linewidth',1.5); % my arrow
l = legend(b,'value','Location','SouthWest','AutoUpdate','off');
l.BoxFace.ColorData = uint8([255 255 255 127]');
l.BoxFace.ColorType = 'truecoloralpha';
ColorData属性为[R G B透明度]
有关信息:这是使用R2015b完成的。
答案 1 :(得分:1)
您可以copyobj
当前的图形轴gca
并将其Color
属性设置为none
。此方法将在图例的补丁和相关文本上画线。
说明:Copyobj
将复制并显示与axes
和bar
相关的所有line
,但不会显示图例(传说本身有axes
)。复制的axes
的显示将与原始显示完美重叠。并且'Color','none'
使复制的axes
的白色背景透明,从而使legend
再次可见,但在该行下 下可见。
这是代码
f = figure;
b = bar(1:3,rand(3));
hold on;
p = plot([0,3],[0,.5],'Color','k','linewidth',1.5); % my arrow
l = legend(b, 'Location','SouthWest');
% add some magic
hax = copyobj(gca, f); % copy the current axes to the figure
set(hax, 'Color', 'none') % set the new axes's background transparent
答案 2 :(得分:0)
您使用哪个MATLAB版本?自MATLAB 2015b起,uistack
似乎不再适用于图例(参见类似的problem)。
如您所说,如果该行可以出现在任何位置,则最佳解决方法可能是选择best
图例位置
l = legend(b,'value','Location','Best','AutoUpdate','off');