自定义图例 Matlab 2014b

Custom Legend Matlab 2014b

我有一个图,其中我使用 hold on.

通过不同的函数绘制了一些图

当我想创建我的 Legend 时,我无法访问我的人物的所有句柄。

有没有办法通过定义情节的尖端和描述的字符串来创建一个独立的图例?

例如我希望能够做到:

figure;
plot(0:0.1:pi, sin(0:0.1:pi), 'b-');
customLegend('r.', 'red dots');

在以前的版本中,可以使用以下方法创建虚拟地块:

h1 = plot([], [], 'r.');
legend(h1, 'red dots');

比如我想把左边的图片换成右边的图片:

所以我得到了这个不是很优雅的解决方案(在 window 之外绘制,保存手柄并将 window 的大小调整到原始轴)。

figure;
plot(0:0.1:pi, sin(0:0.1:pi), 'b-');

hold on;
a = axis; 
h1 = plot(min(a) - 10, min(a),  'r.'); % plots outside of the current figure
axis(a);
legend(h1, 'red dots');
hold off;

如果有人有更优雅的解决方案,我很乐意采纳:)

编辑:实际上可以使用 nan 而不是 [],例如:

h1 = plot(nan, nan, 'r.');
h2 = plot(nan, nan, 'b+');
legend([h1, h2], 'red dots', 'blue cross');

但是此方法不适用于矩形命令。

只需使用 NaN 而不是 []:

figure;
plot([1:20], [-9:10], 'b-');
hold on
h1 = plot(NaN, NaN, 'r.');
legend(h1, 'red dots');

我对其工作原理的解释:使用 NaN 生成一个线对象 h1(大小 1x1)。这条线在图中不可见,因为 NaN 值未显示在图表中,但您可以将其用于图例。相反,使用 [] 会产生一个空的 h1(大小为 0x1),当用作 legend.

的第一个输入时,它没有达到预期的效果