diff tools/myTools/bin/sfa/plot/base.py @ 1:7e5c71b2e71f draft default tip

Uploaded
author laurenmarazzi
date Wed, 22 Dec 2021 16:00:34 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/myTools/bin/sfa/plot/base.py	Wed Dec 22 16:00:34 2021 +0000
@@ -0,0 +1,144 @@
+# -*- coding: utf-8 -*-
+
+import matplotlib.pyplot as plt
+from matplotlib.gridspec import GridSpec
+
+
+class BaseGridPlot(object):
+
+    def __init__(self, colors=None, *args, **kwargs):
+        if not colors:
+            self._colors = dict()
+        else:
+            self._colors = dict(colors)
+
+        self._set_colors(colors)
+        self._parse_kwargs(**kwargs)
+
+        # Create figure and axis
+        self._create_figure()
+        self._create_axes()
+
+    # end of def __init__
+
+    def _set_default_color(self, prop, defval):
+        if prop not in self._colors:
+            self._colors[prop] = defval
+    # end of def
+
+    def _set_colors(self):
+        raise NotImplementedError()
+
+    def _parse_kwargs(self, **kwargs):
+        """Parse the parameters for GridSpec
+        """
+        self._dim = kwargs.get('dim', (1, 1))
+        self._wspace = kwargs.get('wspace', 0)
+        self._hspace = kwargs.get('hspace', 0)
+        self._width_ratios = kwargs.get('width_ratios', [1])
+        self._height_ratios = kwargs.get('height_ratios', [1])
+
+    def _create_figure(self):
+        self._fig = plt.figure()
+        self._gridspec = GridSpec(*self._dim,
+                                  wspace=self._wspace,
+                                  hspace=self._hspace,
+                                  width_ratios=self._width_ratios,
+                                  height_ratios=self._height_ratios)
+
+        self._fig.set_facecolor('white')
+
+    def _create_axes(self):
+        self._axes = {}
+        ax = self._fig.add_subplot(self._gridspec[0, 0])
+        self._axes['base'] = ax
+        ax.grid(b=False)
+        ax.set_frame_on(False)
+        ax.invert_yaxis()
+        ax.xaxis.tick_top()
+
+    @property
+    def column_tick_fontsize(self):
+        return self._column_tick_fontsize
+
+    @column_tick_fontsize.setter
+    def column_tick_fontsize(self, val):
+        self._column_tick_fontsize = val
+        for ax in self._axes.values():
+            ax.tick_params(axis='x', which='major',
+                           labelsize=self._column_tick_fontsize)
+
+    @property
+    def row_tick_fontsize(self):
+        return self._row_tick_fontsize
+
+    @row_tick_fontsize.setter
+    def row_tick_fontsize(self, val):
+        self._row_tick_fontsize = val
+        for ax in self._axes.values():
+            ax.tick_params(axis='y', which='major',
+                           labelsize=self._row_tick_fontsize)
+
+    # # Properties
+    # @property
+    # def column_tick_fontsize(self):
+    #     raise NotImplementedError()
+    #
+    # @column_tick_fontsize.setter
+    # def column_tick_fontsize(self, val):
+    #     raise NotImplementedError()
+    #
+    # @property
+    # def row_tick_fontsize(self):
+    #     raise NotImplementedError()
+    #
+    # @row_tick_fontsize.setter
+    # def row_tick_fontsize(self, val):
+    #     raise NotImplementedError()
+
+    # @property
+    # def text_fontsize(self):
+    #     raise NotImplementedError()
+    #
+    # @text_fontsize.setter
+    # def text_fontsize(self, val):
+    #     raise NotImplementedError()
+    #
+    # @property
+    # def linewidth(self):
+    #     raise NotImplementedError()
+    #
+    # @linewidth.setter
+    # def linewidth(self, val):
+    #     raise NotImplementedError()
+
+    # Read-only properties
+    @property
+    def colors(self):
+        return self._colors
+
+    @property
+    def fig(self):
+        return self._fig
+
+    @property
+    def axes(self):
+        return self._axes
+
+    @property
+    def gridspec(self):
+        return self._gridspec
+
+
+class BaseTable(BaseGridPlot):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self._create_tables()
+
+    def _create_tables(self):
+        raise NotImplementedError()
+
+    @property
+    def tables(self):
+        return self._tables
\ No newline at end of file