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

Skip to content

Commit 78fa6d9

Browse files
authored
fix ImageWidget.reset_vmin_vmax() (#690)
* fix iw.reset_vmin_vmax() * fix vmin, vmax setting of first frame in imagewidget * update screenshots since vmin changes * update nb iw screenshots
1 parent cf1f3bc commit 78fa6d9

28 files changed

+91
-61
lines changed
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading
Lines changed: 2 additions & 2 deletions
Loading

fastplotlib/widgets/image_widget/_widget.py

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
from copy import deepcopy
12
from typing import Callable
23
from warnings import warn
34

45
import numpy as np
56

67
from rendercanvas import BaseRenderCanvas
78

8-
from ... import Figure
9+
from ...layouts import ImguiFigure as Figure
910
from ...graphics import ImageGraphic
10-
from ...utils import calculate_figure_shape
11+
from ...utils import calculate_figure_shape, quick_min_max
1112
from ...tools import HistogramLUTTool
1213
from ._sliders import ImageWidgetSliders
1314

@@ -507,6 +508,12 @@ def __init__(
507508

508509
graphic_kwargs.update({"cmap": cmap})
509510

511+
vmin_specified, vmax_specified = None, None
512+
if "vmin" in graphic_kwargs.keys():
513+
vmin_specified = graphic_kwargs.pop("vmin")
514+
if "vmax" in graphic_kwargs.keys():
515+
vmax_specified = graphic_kwargs.pop("vmax")
516+
510517
self._figure: Figure = Figure(**figure_kwargs_default)
511518

512519
self._histogram_widget = histogram_widget
@@ -518,7 +525,34 @@ def __init__(
518525

519526
frame = self._process_indices(d, slice_indices=self._current_index)
520527
frame = self._process_frame_apply(frame, data_ix)
521-
ig = ImageGraphic(frame, name="image_widget_managed", **graphic_kwargs)
528+
529+
if (vmin_specified is None) or (vmax_specified is None):
530+
# if either vmin or vmax are not specified, calculate an estimate by subsampling
531+
vmin_estimate, vmax_estimate = quick_min_max(d)
532+
533+
# decide vmin, vmax passed to ImageGraphic constructor based on whether it's user specified or now
534+
if vmin_specified is None:
535+
# user hasn't specified vmin, use estimated value
536+
vmin = vmin_estimate
537+
else:
538+
# user has provided a specific value, use that
539+
vmin = vmin_specified
540+
541+
if vmax_specified is None:
542+
vmax = vmax_estimate
543+
else:
544+
vmax = vmax_specified
545+
else:
546+
# both vmin and vmax are specified
547+
vmin, vmax = vmin_specified, vmax_specified
548+
549+
ig = ImageGraphic(
550+
frame,
551+
name="image_widget_managed",
552+
vmin=vmin,
553+
vmax=vmax,
554+
**graphic_kwargs,
555+
)
522556
subplot.add_graphic(ig)
523557
subplot.name = name
524558
subplot.set_title(name)
@@ -811,10 +845,6 @@ def reset_vmin_vmax(self):
811845
hlut = subplot.docks["right"]["histogram_lut"]
812846
hlut.set_data(data, reset_vmin_vmax=True)
813847

814-
else:
815-
for ig in self.managed_graphics:
816-
ig.reset_vmin_vmax()
817-
818848
def reset_vmin_vmax_frame(self):
819849
"""
820850
Resets the vmin vmax and HistogramLUT widgets w.r.t. the current data shown in the

0 commit comments

Comments
 (0)