我正在尝试编写代码来设置数字和图例看起来不错。我制作了绘制数字的代码
figure(1)
hold on
plot(x1, y1, 'DisplayName', name1)
plot(x2, y2, 'DisplayName', name2)
plot(x3, y3, 'DisplayName', name3)
现在,我需要另一个脚本,只有当原始数字中的name1
name2
和name3
实际设置为某个非默认值,即''
时才会启用图例。 1}},否则我根本不需要传奇。
function optionallegend(figure)
if ????
legend('show');
end
我能这样做吗?
答案 0 :(得分:3)
您可以使用findobj
找到当前轴中具有DisplayName
属性的所有绘图对象,并将其定义为''
以外的其他对象。 findobj
返回一个句柄数组,然后可以将其传递给legend
。如果没有符合该标准的图表,则不会显示任何图例。
plots = findobj(gca, '-not', 'DisplayName', '', '-property', 'DisplayName');
if ~isempty(plots); legend(plots); end
作为一个例子
figure;
hax = axes();
hold(hax, 'on')
plot(rand(5,1), 'DisplayName', 'Plot #1');
plot(rand(5,1))
plot(rand(5,1), 'DisplayName', 'Plot #3');
legend(findobj(hax, '-not', 'DisplayName', '', '-property', 'DisplayName'));
如果您想仅为特定绘图绘制图例,则可以显式存储绘图句柄并将其直接传递给legend
。
hplot1 = plot(rand(5,1), 'DisplayName', 'Plot #1');
hplot2 = plot(rand(5,1), 'DisplayName', 'Plot #2');
legend([hplot1, hplot2])