t = 0 : 0.01 : 2 * pi;
s = sin(t);
c = cos(t);
m = -sin(t);
hold on;
plot(t, s, 'r');
plot(t, c, 'b');
plot(t, m, 'g');
hold off;
legend('', 'cosine', '');
我的绘图中有几条曲线。我想只为其中一些人展示传奇。我该怎么做?
例如,如何在上面的绘图中仅显示余弦曲线的图例?当我将legend()
函数称为legend('', 'cosine');
而不是添加空的第三个参数时,确实会从图例中删除第三个绿线。但这并没有解决我的问题,因为不受欢迎的红线仍然可见。
答案 0 :(得分:35)
我不喜欢存储句柄值,当我的图中有很多图形时,它变得一团糟。因此我找到了另一种解决方案。
t = 0 : 0.01 : 2 * pi;
s = sin(t);
c = cos(t);
m = -sin(t);
hold on;
plot(t, s, 'r', 'HandleVisibility','off'); % Plotting and telling to hide legend handle
h2 = plot(t, c, 'b', 'DisplayName', 'cosine'); % Plotting and giving legend name
plot(t, m, 'g', 'HandleVisibility','off'); % Plotting and telling to hide legend handle
legend show % Generating legend based on already submitted values
这给了我与Eitan T的回答相同的图表。
应该注意的是,这也会影响其他matlab函数,例如cla
只会删除图例中提到的图。在Matlab文档中搜索HandleVisibility以获取更多相关信息。
答案 1 :(得分:26)
只需将所需的图例句柄存储在变量中,然后将数组传递给legend
。在你的情况下,它只是一个值,如下所示:
hold on;
plot(t, s, 'r');
h2 = plot(t, c, 'b'); % # Storing only the desired handle
plot(t, m, 'g');
hold off;
legend(h2, 'cosine'); % # Passing only the desired handle
你应该得到这个情节:
答案 2 :(得分:5)
让我们从您的变量开始并绘制它们:
t = 0 : 0.01 : 2 * pi;
s = sin(t);
c = cos(t);
m = -sin(t);
figure;
hold ('all');
hs = plot(t, s);
hc = plot(t, c);
hm = plot(t, m);
有一个名为IconDisplayStyle的属性。它被埋得很深。您需要遵循的路径是:
行 - >注释 - > LegendInformation - > IconDisplayStyle
设置IconDisplayStyle
属性off
可以跳过该行。举个例子,我将关闭hs
的传奇。
hsAnno = get(hs, 'Annotation');
hsLegend = get(hsAnno, 'LegendInformation');
set(hsLegend, 'IconDisplayStyle', 'off');
当然你可以这样做:
set(get(get(hs, 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'off');
但我发现它更难理解。
现在,legend
功能只会跳过hs
。
结束我的代码:
legend('cosine', 'repeat for this handle')
会给你这个:
编辑:乔纳斯在评论中提出了一个很好的建议:
像这样设置hc的DisplayName
属性:
set(hc, 'DisplayName', 'cosine');
legend(gca, 'show');
将为您提供所需的图例。您将自己的行句柄与'cosine'
相关联。因此,您只需使用'off'
或'show'
参数调用图例。
答案 3 :(得分:1)
您可以更改曲线的绘制顺序,并将图例应用于第一条曲线:
t = 0 : 0.01 : 2 * pi;
s = sin(t);
c = cos(t);
m = -sin(t);
plot(t,c,t,s,t,m) % cosine is plotted FIRST
legend('cosine') % legend for the FIRST element
如果我想要为余弦和-sine输入一个图例:
plot(t,c,t,m,t,s) % cosine and -sine are first and second curves
legend('cosine', '-sine')
答案 4 :(得分:1)
为了扩展塞巴斯蒂安的答案,我有一个特殊情况,我用两种格式之一绘制几条线(桁架梁处于压缩或张力状态),并且能够在图例中绘制特定的绘图手柄,只要标签长度相同
for ii=1:nBeams
if X(ii)<0 %Bars with negative force are in compession
h1=plot(linspace(beamCord(ii,1),beamCord(ii,3)),...
linspace(beamCord(ii,2),beamCord(ii,4)),'r:');
elseif X(ii)>0 %Bars with positive force are in tension
h2=plot(linspace(beamCord(ii,1),beamCord(ii,3)),...
linspace(beamCord(ii,2),beamCord(ii,4)),'b');
end
end
legend([h1;h2],['Compression';'Tension ']);
在“Tension”后面添加了4个空格,以使字符数保持一致。
答案 5 :(得分:-2)
快速插图黑客: