将添加条目添加到现有图例
现有的传说可能难以管理。例如,如果你的绘图有两行,但只有一行有一个图例条目,并且应该保持这种方式,那么添加带有图例条目的第三行可能很困难。例:
figure
hold on
fplot(@sin)
fplot(@cos)
legend sin % Add only a legend entry for sin
hTan = fplot(@tan); % Make sure to get the handle, hTan, to the graphics object you want to add to the legend
现在,要为 tan
添加一个图例条目,但不为 cos
添加,以下任何一行都不会起作用; 他们都以某种方式失败了:
legend tangent % Replaces current legend -> fail
legend -DynamicLegend % Undocumented feature, adds 'cos', which shouldn't be added -> fail
legend sine tangent % Sets cos DisplayName to 'tangent' -> fail
legend sine '' tangent % Sets cos DisplayName, albeit empty -> fail
legend(f)
幸运的是,一个名为 PlotChildren
的无证传奇属性跟踪了父母 1 的孩子。因此,要采用的方法是通过 PlotChildren
属性显式设置图例的子项,如下所示:
hTan.DisplayName = 'tangent'; % Set the graphics object's display name
l = legend;
l.PlotChildren(end + 1) = hTan; % Append the graphics handle to legend's plot children
如果在 PlotChildren
属性中添加或删除对象,则图例会自动更新。
1 确实:数字。你可以将具有 DisplayName
属性的任何图形的子项添加到图中的任何图例,例如,从不同的子图。这是因为图例本身基本上是一个轴对象。
在 MATLAB R2016b 上测试