@@ -147,51 +147,55 @@ def set_text_props(self, **kwargs):
147
147
self ._text .update (kwargs )
148
148
149
149
150
- class FancyCell (Cell ):
150
+ class CustomCell (Cell ):
151
151
"""
152
- A subclass of Cell where vertical and horizontal lines may
153
- be selectively ommited.
152
+ A subclass of Cell where the sides may be visibly toggled.
153
+
154
154
"""
155
155
156
- def __init__ (self , xy , width , height ,
157
- edgecolor = 'k' , facecolor = 'w' ,
158
- fill = True ,
159
- text = '' ,
160
- loc = None ,
161
- fontproperties = None ,
162
- edgeVisibility = "LRBT"
163
- ):
164
- Cell .__init__ (self , xy , width , height , edgecolor , facecolor , fill ,
165
- text , loc , fontproperties )
166
- for letter in edgeVisibility :
167
- if letter not in "LRBT" :
168
- msg = ('Invalid edgeVisibility params for FancyCell:' +
169
- '{0}, must only consist of {1}.' ).format (
170
- value ,
171
- ", " .join ({'T' , 'B' , 'L' , 'R' }),
172
- )
173
- raise ValueError (msg )
174
- self ._edgeVisibility = edgeVisibility
156
+ EDGES = 'BRTL'
157
+ EDGE_ALIASES = {'open' : '' ,
158
+ 'closed' : EDGES , # default
159
+ 'horizontal' : 'BT' ,
160
+ 'vertical' : 'RL'
161
+ }
162
+
163
+ def __init__ (self , * args , ** kwargs ):
164
+
165
+ visible_edges = kwargs .pop ('visible_edges' )
166
+ Cell .__init__ (self , * args , ** kwargs )
167
+
168
+ if visible_edges is None :
169
+ self ._visible_edges = self .EDGES
170
+ elif visible_edges in self .EDGE_ALIASES :
171
+ self ._visible_edges = self .EDGE_ALIASES [visible_edges ]
172
+ else :
173
+ for edge in visible_edges :
174
+ if edge not in self .EDGES :
175
+ msg = 'Invalid edge param {0}, must only be one of {1} or \
176
+ string of {2}.' .format (
177
+ visible_edges ,
178
+ ", " .join (self .EDGE_ALIASES .keys ()),
179
+ ", " .join (self .EDGES ),
180
+ )
181
+ raise ValueError (msg )
182
+ self ._visible_edges = visible_edges
175
183
176
184
def get_path (self ):
177
- 'Return a path where the edges specificed by edgeVisibility are drawn'
178
- edgeCodes = [Path .MOVETO , Path .MOVETO , Path .MOVETO ,
179
- Path .MOVETO , Path .MOVETO ]
180
- if 'B' in self ._edgeVisibility :
181
- edgeCodes [1 ] = Path .LINETO
182
- if 'R' in self ._edgeVisibility :
183
- edgeCodes [2 ] = Path .LINETO
184
- if 'T' in self ._edgeVisibility :
185
- edgeCodes [3 ] = Path .LINETO
186
- if 'L' in self ._edgeVisibility :
187
- edgeCodes [4 ] = Path .LINETO
188
-
189
- path = Path ([[0.0 , 0.0 ], [1.0 , 0.0 ], [1.0 , 1.0 ], [0.0 , 1.0 ],
190
- [0.0 , 0.0 ]],
191
- edgeCodes ,
192
- readonly = True
193
- )
194
- return path
185
+ 'Return a path where the edges specificed by _visible_edges are drawn'
186
+
187
+ codes = [Path .MOVETO ] * 4
188
+ codes .append (Path .CLOSEPOLY )
189
+
190
+ for i , edge in enumerate (self .EDGES , 1 ):
191
+ if edge in self ._visible_edges :
192
+ codes [i ] = Path .LINETO
193
+
194
+ return Path (
195
+ [[0.0 , 0.0 ], [1.0 , 0.0 ], [1.0 , 1.0 ], [0.0 , 1.0 ], [0.0 , 0.0 ]],
196
+ codes ,
197
+ readonly = True
198
+ )
195
199
196
200
197
201
class Table (Artist ):
@@ -227,12 +231,6 @@ class Table(Artist):
227
231
'bottom' : 17 ,
228
232
}
229
233
230
- DRAWLINE_ALIASES = {'open' : '' ,
231
- 'closed' : 'LRBT' , # default
232
- 'horizontal' : 'TB' ,
233
- 'vertical' : 'LR'
234
- }
235
-
236
234
FONTSIZE = 10
237
235
AXESPAD = 0.02 # the border between the axes and table edge
238
236
@@ -257,7 +255,7 @@ def __init__(self, ax, loc=None, bbox=None, **kwargs):
257
255
258
256
self ._texts = []
259
257
self ._cells = {}
260
- self ._drawLines = "LTRB"
258
+ self ._drawLines = None
261
259
self ._autoRows = []
262
260
self ._autoColumns = []
263
261
self ._autoFontsize = True
@@ -271,7 +269,7 @@ def add_cell(self, row, col, *args, **kwargs):
271
269
""" Add a cell to the table. """
272
270
xy = (0 , 0 )
273
271
274
- cell = FancyCell (xy , edgeVisibility = self ._drawLines , * args , ** kwargs )
272
+ cell = CustomCell (xy , visible_edges = self ._drawLines , * args , ** kwargs )
275
273
cell .set_figure (self .figure )
276
274
cell .set_transform (self .get_transform ())
277
275
@@ -284,21 +282,7 @@ def drawLines(self):
284
282
285
283
@drawLines .setter
286
284
def drawLines (self , value ):
287
- if value is None :
288
- pass # Leave as previously set
289
- elif value in self .DRAWLINE_ALIASES .keys ():
290
- self ._drawLines = self .DRAWLINE_ALIASES [value ]
291
- else :
292
- for letter in value :
293
- if letter not in "LRBT" :
294
- msg = ('Unrecognized draw lines for Cell:' +
295
- ' {0}, must be one of {1}.' ).format (
296
- value ,
297
- ", " .join ({'open' , 'closed' , 'horizontal' ,
298
- 'vertical' , 'string consisting of {T, B, R, L}' }),
299
- )
300
- raise ValueError (msg )
301
- self ._drawLines = value
285
+ self ._drawLines = value
302
286
303
287
def _approx_text_height (self ):
304
288
return (self .FONTSIZE / 72.0 * self .figure .dpi /
@@ -536,14 +520,14 @@ def table(ax,
536
520
cellLoc = 'right' , colWidths = None ,
537
521
rowLabels = None , rowColours = None , rowLoc = 'left' ,
538
522
colLabels = None , colColours = None , colLoc = 'center' ,
539
- loc = 'bottom' , bbox = None , drawLines = 'LRBT ' ,
523
+ loc = 'bottom' , bbox = None , drawLines = 'BRTL ' ,
540
524
** kwargs ):
541
525
"""
542
526
TABLE(cellText=None, cellColours=None,
543
527
cellLoc='right', colWidths=None,
544
528
rowLabels=None, rowColours=None, rowLoc='left',
545
529
colLabels=None, colColours=None, colLoc='center',
546
- loc='bottom', bbox=None, drawLines='LRBT ')
530
+ loc='bottom', bbox=None, drawLines='BRTL ')
547
531
548
532
Factory function to generate a Table instance.
549
533
0 commit comments