diff --git a/src/python_spectrometer/_plot_manager.py b/src/python_spectrometer/_plot_manager.py index 24030f2eb792fc8b7b98f76f676a3f571a48ae6d..97865a8f284a567c557231df697b2d696ef7fe7f 100644 --- a/src/python_spectrometer/_plot_manager.py +++ b/src/python_spectrometer/_plot_manager.py @@ -74,10 +74,6 @@ class PlotManager: self.legend_kw.setdefault('loc', 'upper right') self.figure_kw.setdefault('num', f'Spectrometer {len(self.__instances) + 1}') - if not any('layout' in key for key in self.figure_kw.keys()): - # depending on the matplotlib version, this setting is either - # layout='tight' or tight_layout=True - self.figure_kw.setdefault('layout', 'tight') if self.subplot_kw.pop('sharex', None) is not None: warnings.warn('sharex in subplot_kw not negotiable, dropping', UserWarning) @@ -102,7 +98,7 @@ class PlotManager: try: self._fig = plt.figure(**self.figure_kw) except TypeError: - if layout := self.figure_kw.pop('layout', False): + if layout := self.figure_kw.pop('layout', None) is not None: # matplotlib < 3.5 doesn't support layout kwarg yet self.figure_kw[f'{layout}_layout'] = True elif layout is False: @@ -579,6 +575,13 @@ class PlotManager: if self._leg is not None: self._leg.remove() + if 'layout' not in self.figure_kw: + try: + self.fig.set_layout_engine('tight') + self.fig.get_layout_engine().execute(self.fig) + finally: + self.fig.set_layout_engine('none') + self.fig.canvas.draw_idle() self.fig.canvas.flush_events()