From c08e1583a96d0ae5642dd3a60321bc21a9a39f1f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 15:18:34 +0100 Subject: [PATCH 1/2] Add contrast limits to histogram plot --- src/napari_matplotlib/histogram.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index f78a850..023d6a3 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -30,6 +30,24 @@ def __init__( ): super().__init__(napari_viewer, parent=parent) self._update_layers(None) + self.viewer.events.theme.connect(self._on_napari_theme_changed) + + def on_update_layers(self) -> None: + """ + Called when the selected layers are updated. + """ + super().on_update_layers() + for layer in self.viewer.layers: + layer.events.contrast_limits.connect(self._update_contrast_lims) + + def _update_contrast_lims(self) -> None: + [ + line.set_xdata(lim) + for lim, line in zip( + self.layers[0].contrast_limits, self._contrast_lines + ) + ] + self.figure.canvas.draw() def draw(self) -> None: """ @@ -63,6 +81,10 @@ def draw(self) -> None: else: self.axes.hist(data.ravel(), bins=bins, label=layer.name) + self._contrast_lines = [ + self.axes.axvline(lim, color="white") + for lim in layer.contrast_limits + ] self.axes.legend() From 49c64a2542dcc105ff30faf9eac1bfd9f9f96022 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 12:01:05 +0000 Subject: [PATCH 2/2] Make mypy happy --- src/napari_matplotlib/histogram.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 023d6a3..27f328a 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -41,12 +41,11 @@ def on_update_layers(self) -> None: layer.events.contrast_limits.connect(self._update_contrast_lims) def _update_contrast_lims(self) -> None: - [ + for lim, line in zip( + self.layers[0].contrast_limits, self._contrast_lines + ): line.set_xdata(lim) - for lim, line in zip( - self.layers[0].contrast_limits, self._contrast_lines - ) - ] + self.figure.canvas.draw() def draw(self) -> None: