我有一个数字,其中我使用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');
例如,我想从左边的图像更改为右边的图像:
答案 0 :(得分:3)
只需使用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
的第一个输入时,它不会产生预期的效果。
答案 1 :(得分:0)
所以我得到了这个不太优雅的解决方案(在窗口外绘图,保存手柄并将窗口调整到原始轴的大小)。
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');
但是这种方法不适用于rectangles命令。