Error when passing empty legend handle
Opened this issue · 1 comments
sco1 commented
MATLAB throws an error when attempting to utilize some legtools methods with an empty legend handle. This is due to the implicit assumption that the methods are being called on a non-empty legend handle.
For example:
% Set up figure
x = 1:10;
y1 = x;
figure
plot(x, y1);
lh = legend;
% Add box
dim = [0.4 0.4 0.2 0.2];
annotation('rectangle', dim, 'Color', 'red')
% Add a legend entry
legtools.adddummy(lh, 'A Red Rectangle', {'Color', 'red'})
Throws an uncaught error:
Expected one output from a curly brace or dot indexing expression, but there were 0 results.
Error in legtools.adddummy (line 179)
parentaxes = lh.PlotChildren(1).Parent;
Error in testcode (line 13)
legtools.adddummy(lh, 'A Red Rectangle', {'Color', 'red'})
See: #7
sco1 commented
The current behavior is correct-ish. Depending on the MATLAB release (>= R2014b), a "blank" legend() will be either a matlab.graphics.illustration.Legend object or matlab.graphics.GraphicsPlaceholder object. So they're both technically empty legends.
However, both append and adddummy should be able to add legend entries to an empty legend, so this will be added soon(ish).