From 367973194a0324cf61159eddefc76f47aee00139 Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Thu, 8 Jun 2023 09:53:09 +0100 Subject: [PATCH 1/3] Test first. A TDD test to check we can set the theme from a user-defined stylesheet. For this, just use Solarized_Light2. --- src/napari_matplotlib/tests/test_theme.py | 38 ++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index dfeb5b5f..1e4a2073 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -1,8 +1,13 @@ +import shutil +from pathlib import Path + +import matplotlib import napari import numpy as np import pytest +from matplotlib.colors import to_rgba -from napari_matplotlib import ScatterWidget +from napari_matplotlib import HistogramWidget, ScatterWidget from napari_matplotlib.base import NapariMPLWidget @@ -88,3 +93,34 @@ def test_titles_respect_theme( assert ax.xaxis.label.get_color() == expected_text_colour assert ax.yaxis.label.get_color() == expected_text_colour + + +def find_mpl_stylesheet(name: str) -> Path: + """Find the built-in matplotlib stylesheet.""" + return Path(matplotlib.__path__[0]) / f"mpl-data/stylelib/{name}.mplstyle" + + +def test_stylesheet_in_cwd(tmpdir, make_napari_viewer, image_data): + """ + Test that a stylesheet in the current directory is given precidence. + + Do this by copying over a stylesheet from matplotlib's built in styles, + naming it correctly, and checking the colours are as expected. + """ + with tmpdir.as_cwd(): + # Copy Solarize_Light2 to current dir as if it was a user-overriden stylesheet. + shutil.copy(find_mpl_stylesheet("Solarize_Light2"), "./user.mplstyle") + viewer = make_napari_viewer() + viewer.add_image(image_data[0], **image_data[1]) + widget = HistogramWidget(viewer) + ax = widget.figure.gca() + + # The axes should have a light brownish grey background: + assert ax.get_facecolor() == to_rgba("#eee8d5") + assert ax.patch.get_facecolor() == to_rgba("#eee8d5") + + # The figure background and axis gridlines are light yellow: + assert widget.figure.patch.get_facecolor() == to_rgba("#fdf6e3") + for gridline in ax.get_xgridlines() + ax.get_ygridlines(): + assert gridline.get_visible() is True + assert gridline.get_color() == "#fdf6e3" From be3ed986bcfd458f6f06919f619aec7363ab5a67 Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Thu, 8 Jun 2023 09:57:25 +0100 Subject: [PATCH 2/3] Users can override the napari-theme-based style ... with their own custom stylesheet. At the moment this must be called 'user.mplstyle' in the cwd. --- src/napari_matplotlib/base.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index fda2d2d5..9e0d50e8 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -2,6 +2,7 @@ from pathlib import Path from typing import List, Optional, Tuple +import matplotlib.style import napari from matplotlib.axes import Axes from matplotlib.backends.backend_qtagg import ( @@ -41,9 +42,11 @@ def __init__( super().__init__(parent=parent) self.viewer = napari_viewer + has_mpl_stylesheet = self._apply_user_stylesheet_if_present() self.canvas = FigureCanvas() - self.canvas.figure.patch.set_facecolor("none") + if not has_mpl_stylesheet: + self.canvas.figure.patch.set_facecolor("none") self.canvas.figure.set_layout_engine("constrained") self.toolbar = NapariNavigationToolbar( self.canvas, parent=self @@ -70,10 +73,16 @@ def add_single_axes(self) -> None: The Axes is saved on the ``.axes`` attribute for later access. """ self.axes = self.figure.subplots() - self.apply_napari_colorscheme(self.axes) + self.apply_style(self.axes) + + def apply_style(self, ax: Axes) -> None: + """ + Use the user-supplied stylesheet if present, otherwise apply the + napari-compatible colorscheme (theme-dependent) to an Axes. + """ + if self._apply_user_stylesheet_if_present(): + return - def apply_napari_colorscheme(self, ax: Axes) -> None: - """Apply napari-compatible colorscheme to an Axes.""" # get the foreground colours from current theme theme = napari.utils.theme.get_theme(self.viewer.theme, as_dict=False) fg_colour = theme.foreground.as_hex() # fg is a muted contrast to bg @@ -93,6 +102,20 @@ def apply_napari_colorscheme(self, ax: Axes) -> None: ax.tick_params(axis="x", colors=text_colour) ax.tick_params(axis="y", colors=text_colour) + def _apply_user_stylesheet_if_present(self) -> bool: + """ + Apply the user-supplied stylesheet if present. + + Returns + ------- + True if the stylesheet was present and applied. + False otherwise. + """ + if (Path.cwd() / "user.mplstyle").exists(): + matplotlib.style.use("./user.mplstyle") + return True + return False + def _on_theme_change(self) -> None: """Update MPL toolbar and axis styling when `napari.Viewer.theme` is changed. @@ -101,7 +124,7 @@ def _on_theme_change(self) -> None: """ self._replace_toolbar_icons() if self.figure.gca(): - self.apply_napari_colorscheme(self.figure.gca()) + self.apply_style(self.figure.gca()) def _theme_has_light_bg(self) -> bool: """ @@ -245,7 +268,7 @@ def _draw(self) -> None: isinstance(layer, self.input_layer_types) for layer in self.layers ): self.draw() - self.apply_napari_colorscheme(self.figure.gca()) + self.apply_style(self.figure.gca()) self.canvas.draw() def clear(self) -> None: From 6166de7005a5c370003bceb0bc4e6a55b3e292fa Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Thu, 8 Jun 2023 14:16:36 +0100 Subject: [PATCH 3/3] Switch from interrogating the theme to stylesheets Follows on from #2 and #86. We can remove the hard-coded theme setup and move to using matplotlib stylesheets (napari-dark.mplstyle and napari-light.mplstyle) instead. The caveat is that this means the plugin is _less_ flexible when presented with a weird and wonderful user theme. --- src/napari_matplotlib/base.py | 60 ++++++++---------- .../stylesheets/napari-dark.mplstyle | 12 ++++ .../stylesheets/napari-light.mplstyle | 12 ++++ .../tests/baseline/test_histogram_2D.png | Bin 28728 -> 28706 bytes .../tests/baseline/test_histogram_3D.png | Bin 20558 -> 20565 bytes src/napari_matplotlib/tests/test_theme.py | 17 ++++- 6 files changed, 67 insertions(+), 34 deletions(-) create mode 100644 src/napari_matplotlib/stylesheets/napari-dark.mplstyle create mode 100644 src/napari_matplotlib/stylesheets/napari-light.mplstyle diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 9e0d50e8..a944d08c 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -1,10 +1,10 @@ import os +import warnings from pathlib import Path from typing import List, Optional, Tuple import matplotlib.style import napari -from matplotlib.axes import Axes from matplotlib.backends.backend_qtagg import ( FigureCanvas, NavigationToolbar2QT, @@ -41,12 +41,8 @@ def __init__( ): super().__init__(parent=parent) self.viewer = napari_viewer - - has_mpl_stylesheet = self._apply_user_stylesheet_if_present() + self.apply_style() self.canvas = FigureCanvas() - - if not has_mpl_stylesheet: - self.canvas.figure.patch.set_facecolor("none") self.canvas.figure.set_layout_engine("constrained") self.toolbar = NapariNavigationToolbar( self.canvas, parent=self @@ -73,34 +69,27 @@ def add_single_axes(self) -> None: The Axes is saved on the ``.axes`` attribute for later access. """ self.axes = self.figure.subplots() - self.apply_style(self.axes) - def apply_style(self, ax: Axes) -> None: + def apply_style(self) -> None: """ - Use the user-supplied stylesheet if present, otherwise apply the - napari-compatible colorscheme (theme-dependent) to an Axes. + Any user-supplied stylesheet takes highest precidence, otherwise apply + the napari-compatible colorscheme (depends on the napari theme). """ if self._apply_user_stylesheet_if_present(): return - # get the foreground colours from current theme - theme = napari.utils.theme.get_theme(self.viewer.theme, as_dict=False) - fg_colour = theme.foreground.as_hex() # fg is a muted contrast to bg - text_colour = theme.text.as_hex() # text is high contrast to bg - - # changing color of axes background to transparent - ax.set_facecolor("none") - - # changing colors of all axes - for spine in ax.spines: - ax.spines[spine].set_color(fg_colour) - - ax.xaxis.label.set_color(text_colour) - ax.yaxis.label.set_color(text_colour) - - # changing colors of axes labels - ax.tick_params(axis="x", colors=text_colour) - ax.tick_params(axis="y", colors=text_colour) + stylesheet_dir = self._get_path_to_mpl_stylesheets() + if self.viewer.theme == "dark": + matplotlib.style.use(stylesheet_dir / "napari-dark.mplstyle") + elif self.viewer.theme == "light": + matplotlib.style.use(stylesheet_dir / "napari-light.mplstyle") + else: + warnings.warn( + f"Napari theme '{self.viewer.theme}' is not supported by" + " napari-matplotlib. Will fall back to the matplotlib default." + ) + matplotlib.style.use("default") + return def _apply_user_stylesheet_if_present(self) -> bool: """ @@ -108,12 +97,14 @@ def _apply_user_stylesheet_if_present(self) -> bool: Returns ------- - True if the stylesheet was present and applied. - False otherwise. + True if the stylesheet was present and applied. + False otherwise. """ if (Path.cwd() / "user.mplstyle").exists(): matplotlib.style.use("./user.mplstyle") return True + # TODO: can put more complicated stuff in here. Like a config dir, + # or take a given named file from the matplotlib user styles return False def _on_theme_change(self) -> None: @@ -123,8 +114,8 @@ def _on_theme_change(self) -> None: At the moment we only handle the default 'light' and 'dark' napari themes. """ self._replace_toolbar_icons() - if self.figure.gca(): - self.apply_style(self.figure.gca()) + self.apply_style() + # self.canvas.reload() def _theme_has_light_bg(self) -> bool: """ @@ -139,6 +130,9 @@ def _theme_has_light_bg(self) -> bool: _, _, bg_lightness = theme.background.as_hsl_tuple() return bg_lightness > 0.5 + def _get_path_to_mpl_stylesheets(self) -> Path: + return Path(__file__).parent / "stylesheets" + def _get_path_to_icon(self) -> Path: """ Get the icons directory (which is theme-dependent). @@ -268,7 +262,7 @@ def _draw(self) -> None: isinstance(layer, self.input_layer_types) for layer in self.layers ): self.draw() - self.apply_style(self.figure.gca()) + self.apply_style() self.canvas.draw() def clear(self) -> None: diff --git a/src/napari_matplotlib/stylesheets/napari-dark.mplstyle b/src/napari_matplotlib/stylesheets/napari-dark.mplstyle new file mode 100644 index 00000000..1658f9b4 --- /dev/null +++ b/src/napari_matplotlib/stylesheets/napari-dark.mplstyle @@ -0,0 +1,12 @@ +# Dark-theme napari colour scheme for matplotlib plots + +# text (very light grey - almost white): #f0f1f2 +# foreground (mid grey): #414851 +# background (dark blue-gray): #262930 + +figure.facecolor : none +axes.labelcolor : f0f1f2 +axes.facecolor : none +axes.edgecolor : 414851 +xtick.color : f0f1f2 +ytick.color : f0f1f2 diff --git a/src/napari_matplotlib/stylesheets/napari-light.mplstyle b/src/napari_matplotlib/stylesheets/napari-light.mplstyle new file mode 100644 index 00000000..be78f2ce --- /dev/null +++ b/src/napari_matplotlib/stylesheets/napari-light.mplstyle @@ -0,0 +1,12 @@ +# Light-theme napari colour scheme for matplotlib plots + +# text (): #3b3a39 +# foreground (): #d6d0ce +# background (): #efebe9 + +figure.facecolor : none +axes.labelcolor : 3b3a39 +axes.facecolor : none +axes.edgecolor : d6d0ce +xtick.color : 3b3a39 +ytick.color : 3b3a39 diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_2D.png b/src/napari_matplotlib/tests/baseline/test_histogram_2D.png index b76d1e10a46f515a28a32ac4ec0b4ae024f801cb..aeb4fb02c69bf231d7226a6894d41e6deda49fac 100644 GIT binary patch literal 28706 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

?VquHF-m$bPE+=+P@hH~?OF!5hM< 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 B5JLa} literal 20558 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 diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index 1e4a2073..129a79ba 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -54,8 +54,23 @@ def test_theme_background_check(make_napari_viewer): assert widget._theme_has_light_bg() is True _mock_up_theme() + with pytest.warns(UserWarning, match="theme 'blue' is not supported"): + viewer.theme = "blue" + assert widget._theme_has_light_bg() is True + + +def test_unknown_theme_raises_warning(make_napari_viewer): + """ + Check that widget construction warns if it doesn't recognise napari's theme. + + Note that testing for the expected warning when theme is changed _after_ the + widget is created is part of ``test_theme_background_check``. + """ + viewer = make_napari_viewer() + _mock_up_theme() # creates the 'blue' theme which is not a standard napari theme viewer.theme = "blue" - assert widget._theme_has_light_bg() is True + with pytest.warns(UserWarning, match="theme 'blue' is not supported"): + HistogramWidget(viewer) @pytest.mark.parametrize(