Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses matplotlib/matplotlib#17775, where the existing legend on a plot was lost after opening and applying changes via the figureoptions dialog.
Why is this change necessary?
Currently, when applying figure options, a new legend is generated without retaining the properties of the original legend (e.g., location, ncols, fontsize, bbox_to_anchor, etc.). This results in the loss of user-defined legend customizations after using the UI.
What problem does it solve?
This fix preserves the current legend's properties (if one exists) and applies them when regenerating the legend. It ensures the UI remains non-destructive and retains layout fidelity.
Reasoning for the implementation:
If an existing legend is found (axes.legend_ is not None), its properties are extracted and reused when calling axes.legend(...) again. The bbox_to_anchor is handled safely by checking its bounds. Finally, the draggable property is reapplied to the new legend.