Skip to content

Commit 61fc1da

Browse files
timtreisclaude
andcommitted
Restore DPI preservation for user-provided axes
The stash application accidentally reverted the resolved_dpi logic from commit 303140c, causing user figure DPI to be silently overwritten with rcParams defaults. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 28a04a8 commit 61fc1da

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/spatialdata_plot/pl/utils.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,14 +251,17 @@ def _prepare_params_plot(
251251
# handle axes and size
252252
wspace = 0.75 / rcParams["figure.figsize"][0] + 0.02 if wspace is None else wspace
253253
figsize = rcParams["figure.figsize"] if figsize is None else figsize
254-
dpi = rcParams["figure.dpi"] if dpi is None else dpi
254+
# When creating a new figure, fall back to rcParams; when the user provides
255+
# their own axes, preserve the figure's existing DPI (only override if
256+
# the user explicitly passed dpi= to show()).
257+
resolved_dpi = rcParams["figure.dpi"] if dpi is None else dpi
255258
if num_panels > 1 and ax is None:
256259
fig, grid = _panel_grid(
257260
num_panels=num_panels,
258261
hspace=hspace,
259262
wspace=wspace,
260263
ncols=ncols,
261-
dpi=dpi,
264+
dpi=resolved_dpi,
262265
figsize=figsize,
263266
)
264267
axs: None | Sequence[Axes] = [plt.subplot(grid[c]) for c in range(num_panels)]
@@ -274,14 +277,16 @@ def _prepare_params_plot(
274277
)
275278
assert ax is None or isinstance(ax, Sequence), f"Invalid type of `ax`: {type(ax)}, expected `Sequence`."
276279
axs = ax
280+
if dpi is not None:
281+
fig.set_dpi(dpi)
277282
else:
278283
axs = None
279284
if ax is None:
280-
fig, ax = plt.subplots(figsize=figsize, dpi=dpi, constrained_layout=True)
285+
fig, ax = plt.subplots(figsize=figsize, dpi=resolved_dpi, constrained_layout=True)
281286
elif isinstance(ax, Axes):
282-
# needed for rasterization if user provides Axes object
283287
fig = ax.get_figure()
284-
fig.set_dpi(dpi)
288+
if dpi is not None:
289+
fig.set_dpi(dpi)
285290

286291
# set scalebar
287292
if scalebar_dx is not None:

0 commit comments

Comments
 (0)