Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1004326

Browse files
author
RoomWithOutRoof
committed
Fix legend settings not preserved when regenerating in Qt figure options
When '(Re)-generate automatic legend' is checked in the Figure Options dialog, the regenerated legend previously only preserved 'ncols' and 'draggable' settings. Other important legend properties like 'bbox_to_anchor', 'loc', 'mode', and 'borderaxespad' were discarded. Now the code captures these additional properties from the existing legend (if present) and passes them to axes.legend(), preserving the user's intended legend appearance. Fixes #17775
1 parent b1683be commit 1004326

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

lib/matplotlib/backends/qt_editor/figureoptions.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,30 @@ def apply_callback(data):
248248
if generate_legend:
249249
draggable = None
250250
ncols = 1
251+
# Collect legend properties from the old legend to preserve them
252+
legend_kwargs = {}
251253
if axes.legend_ is not None:
252254
old_legend = axes.get_legend()
253255
draggable = old_legend._draggable is not None
254256
ncols = old_legend._ncols
255-
new_legend = axes.legend(ncols=ncols)
257+
legend_kwargs['ncols'] = ncols
258+
# Preserve bbox_to_anchor
259+
if old_legend._bbox_to_anchor is not None:
260+
bbox = old_legend._bbox_to_anchor._bbox
261+
legend_kwargs['bbox_to_anchor'] = (
262+
bbox.x0, bbox.y0,
263+
bbox.x1 - bbox.x0, bbox.y1 - bbox.y0
264+
)
265+
# Preserve loc
266+
legend_kwargs['loc'] = old_legend._loc_real
267+
# Preserve mode (horizontal vs vertical distribution)
268+
if old_legend._mode is not None:
269+
legend_kwargs['mode'] = old_legend._mode
270+
# Preserve borderaxespad
271+
legend_kwargs['borderaxespad'] = old_legend.borderaxespad
272+
else:
273+
legend_kwargs['ncols'] = ncols
274+
new_legend = axes.legend(**legend_kwargs)
256275
if new_legend:
257276
new_legend.set_draggable(draggable)
258277

0 commit comments

Comments
 (0)