自定义图例Matlab 2014b

自定义图例Matlab 2014b,matlab,legend,matlab-figure,matlab-hg2,Matlab,Legend,Matlab Figure,Matlab Hg2,我有一个图,其中我使用按住,通过不同的函数绘制了一些图 当我想要创建我的图例时,我无法访问我的图形的所有句柄 有没有办法通过定义绘图的尖端和描述的字符串来创建独立的图例 例如,我希望能够做到: figure; plot(0:0.1:pi, sin(0:0.1:pi), 'b-'); customLegend('r.', 'red dots'); 在以前的版本中,可以使用以下方法创建虚拟绘图: h1 = plot([], [], 'r.'); legend(h1, 'red dots'); 例

我有一个图,其中我使用
按住
,通过不同的函数绘制了一些图

当我想要创建我的图例时,我无法访问我的图形的所有句柄

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

例如,我希望能够做到:

figure;
plot(0:0.1:pi, sin(0:0.1:pi), 'b-');
customLegend('r.', 'red dots');
在以前的版本中,可以使用以下方法创建虚拟绘图:

h1 = plot([], [], 'r.');
legend(h1, 'red dots');
例如,我想从左侧图像更改为右侧图像:


所以我得到了这个解决方案,它不是很优雅(在窗口外绘图,保存句柄并将窗口调整到原始轴)

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

编辑:实际上可以使用
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

的第一个输入时,它不会产生预期的效果。即使提供了解决方案,我也不确定您在问什么。只要要使用所有行,就不需要句柄。它们只是按照输入的顺序显示。我想覆盖图例。控制柄使您可以控制要显示的内容。我的问题是我用几种颜色绘制了几个点。在图例中,每种颜色只需要一个标签。您想用什么覆盖它(即替换它)?您提供的图例与默认图例没有任何不同(i edit my first answer;)。我只是希望能够以我想要的方式定义图例。提供的示例只是我实际想要做的事情的简单表示(但它与原始图例有所不同)。不,您没有使用不同的图例(至少我没有得到图例)。典型的图例是
legend('red dots','blue lines')
,它使用您提供的字符串创建一个两行图例,该字符串与绘制顺序对应。在您的示例中,您的做法有哪些不同?
figure;
plot([1:20], [-9:10], 'b-');
hold on
h1 = plot(NaN, NaN, 'r.');
legend(h1, 'red dots');