Extract "labelhandles" from Legend

4 views (last 30 days)
Sim
Sim on 1 Jun 2023
Edited: Sim on 2 Jun 2023
Given the definition of Legend in Matlab:
[leg,labelhandles,outH,outM] = legend(varargin)
Would it be possible to get the content of the second output of the legend, i.e. "labelhandles", just by calling the first output of the legend, i.e.
leg = legend(varargin)
?
  3 Comments
Adam Danz
Adam Danz on 1 Jun 2023
@Sim, before you get too far down that route, know that the additional outputs to legend used to be documented but are no longer documented nor fully supported. Using the undocumented additional legend handles have lead to unexpected behaviors. For example, unexpected fontsize and fontweight, (here too).
Even if you manage to get the legend object handles and adjust their properties, those adjustments may not sustain after saving/loading the figure or when the figure is in Live editor.
I'm not saying you'll definitiely run into these problems, but you might.
Sim
Sim on 2 Jun 2023
Edited: Sim on 2 Jun 2023
Thanks a lot both @Cris LaPierre and @Adam Danz for your comments!
@Adam Danz, good to know! :-) OK, I will not take that route then... However, I would say that the problem to get access to objects that are typically shown/extracted thorugh the second output, i.e. "labelhandles", still remain unsolved... at least to the best of my understanding..... Unless, on File Exchange, there are alternative functions to get the same legend's properties and objects, or, @MathWorks Support Team has a new version of the legend's function in the pipeline.... :-)

Sign in to comment.

Accepted Answer

Matt J
Matt J on 1 Jun 2023
Edited: Matt J on 1 Jun 2023
Would it be possible to get the content of the second output of the legend, i.e. "labelhandles", just by calling the first output of the legend
I was told very recently by Tech Support that it is not possible:
On Wed, Mar 15, 2023 at 9:45AM Laura Li <support@mathworks.com> wrote:
Hello Matt,
Unfortunately there is not. You'd have to use the workaround mentioned previously if you want to have two handles and the properties set correctly. Compatible legend is maintained to prevent old workflows from breaking but new features are not supported for this legend.
On the other hand, could you provide more information on your entire workflow? As in what is your goal with getting the handles to each patch objects? We'd like to support the workflow one day, and we want to make sure your use case is considered in future enhancement plans.
Sincerely,
Laura Li
MathWorks Technical Support
--------------- Original Message ---------------
From:
Sent: 3/14/2023, 4:29 PM
Subject: Re: legend() ignores FaceAlpha [ ref:_00Di0Ha1u._5003q1aAxgK:ref ]
I'm talking about obtaining handles to the patches inside the legend box, such as the handle PatchInLegend handle from your previous code example, ...So my question is really, is there a supported way to obtain PatchInLegend without relying on the two-output syntax of legend() as you did earlier?
  1 Comment
Sim
Sim on 2 Jun 2023
Edited: Sim on 2 Jun 2023
@Matt J Thanks a lot! I have the same issue, i.e. "obtaining handles to the patches inside the legend box"..... Is your email to @MathWorks Support Team related to some public thread here on Matlab Answer that I could take a peek at? (no problem if it is only a private exchange of emails)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!