annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
2
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
3 import matplotlib.pyplot as plt
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
4 from matplotlib.gridspec import GridSpec
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
5
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
6
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
7 class BaseGridPlot(object):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
8
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
9 def __init__(self, colors=None, *args, **kwargs):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
10 if not colors:
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
11 self._colors = dict()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
12 else:
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
13 self._colors = dict(colors)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
14
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
15 self._set_colors(colors)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
16 self._parse_kwargs(**kwargs)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
17
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
18 # Create figure and axis
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
19 self._create_figure()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
20 self._create_axes()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
21
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
22 # end of def __init__
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
23
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
24 def _set_default_color(self, prop, defval):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
25 if prop not in self._colors:
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
26 self._colors[prop] = defval
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
27 # end of def
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
28
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
29 def _set_colors(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
30 raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
31
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
32 def _parse_kwargs(self, **kwargs):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
33 """Parse the parameters for GridSpec
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
34 """
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
35 self._dim = kwargs.get('dim', (1, 1))
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
36 self._wspace = kwargs.get('wspace', 0)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
37 self._hspace = kwargs.get('hspace', 0)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
38 self._width_ratios = kwargs.get('width_ratios', [1])
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
39 self._height_ratios = kwargs.get('height_ratios', [1])
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
40
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
41 def _create_figure(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
42 self._fig = plt.figure()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
43 self._gridspec = GridSpec(*self._dim,
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
44 wspace=self._wspace,
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
45 hspace=self._hspace,
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
46 width_ratios=self._width_ratios,
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
47 height_ratios=self._height_ratios)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
48
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
49 self._fig.set_facecolor('white')
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
50
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
51 def _create_axes(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
52 self._axes = {}
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
53 ax = self._fig.add_subplot(self._gridspec[0, 0])
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
54 self._axes['base'] = ax
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
55 ax.grid(b=False)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
56 ax.set_frame_on(False)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
57 ax.invert_yaxis()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
58 ax.xaxis.tick_top()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
59
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
60 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
61 def column_tick_fontsize(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
62 return self._column_tick_fontsize
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
63
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
64 @column_tick_fontsize.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
65 def column_tick_fontsize(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
66 self._column_tick_fontsize = val
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
67 for ax in self._axes.values():
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
68 ax.tick_params(axis='x', which='major',
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
69 labelsize=self._column_tick_fontsize)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
70
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
71 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
72 def row_tick_fontsize(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
73 return self._row_tick_fontsize
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
74
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
75 @row_tick_fontsize.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
76 def row_tick_fontsize(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
77 self._row_tick_fontsize = val
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
78 for ax in self._axes.values():
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
79 ax.tick_params(axis='y', which='major',
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
80 labelsize=self._row_tick_fontsize)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
81
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
82 # # Properties
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
83 # @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
84 # def column_tick_fontsize(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
85 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
86 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
87 # @column_tick_fontsize.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
88 # def column_tick_fontsize(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
89 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
90 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
91 # @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
92 # def row_tick_fontsize(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
93 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
94 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
95 # @row_tick_fontsize.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
96 # def row_tick_fontsize(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
97 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
98
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
99 # @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
100 # def text_fontsize(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
101 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
102 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
103 # @text_fontsize.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
104 # def text_fontsize(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
105 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
106 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
107 # @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
108 # def linewidth(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
109 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
110 #
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
111 # @linewidth.setter
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
112 # def linewidth(self, val):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
113 # raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
114
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
115 # Read-only properties
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
116 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
117 def colors(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
118 return self._colors
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
119
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
120 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
121 def fig(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
122 return self._fig
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
123
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
124 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
125 def axes(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
126 return self._axes
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
127
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
128 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
129 def gridspec(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
130 return self._gridspec
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
131
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
132
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
133 class BaseTable(BaseGridPlot):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
134
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
135 def __init__(self, *args, **kwargs):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
136 super().__init__(*args, **kwargs)
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
137 self._create_tables()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
138
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
139 def _create_tables(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
140 raise NotImplementedError()
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
141
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
142 @property
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
143 def tables(self):
7e5c71b2e71f Uploaded
laurenmarazzi
parents:
diff changeset
144 return self._tables