@@ -153,49 +153,59 @@ class CustomCell(Cell):
153
153
154
154
"""
155
155
156
- EDGES = 'BRTL'
157
- EDGE_ALIASES = {'open' : '' ,
158
- 'closed' : EDGES , # default
159
- 'horizontal' : 'BT' ,
160
- 'vertical' : 'RL'
161
- }
156
+ _edges = 'BRTL'
157
+ _edge_aliases = {'open' : '' ,
158
+ 'closed' : _edges , # default
159
+ 'horizontal' : 'BT' ,
160
+ 'vertical' : 'RL'
161
+ }
162
162
163
163
def __init__ (self , * args , ** kwargs ):
164
-
165
164
visible_edges = kwargs .pop ('visible_edges' )
166
165
Cell .__init__ (self , * args , ** kwargs )
166
+ self .visible_edges = visible_edges
167
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 ]
168
+ @property
169
+ def visible_edges (self ):
170
+ return self ._visible_edges
171
+
172
+ @visible_edges .setter
173
+ def visible_edges (self , value ):
174
+ if value is None :
175
+ self ._visible_edges = self ._edges
176
+ elif value in self ._edge_aliases :
177
+ self ._visible_edges = self ._edge_aliases [value ]
172
178
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
- )
179
+ for edge in value :
180
+ if edge not in self ._edges :
181
+ msg = ( 'Invalid edge param {0}, must only be one of'
182
+ ' {1} or string of {2}.') .format (
183
+ value ,
184
+ ", " .join (self ._edge_aliases .keys ()),
185
+ ", " .join (self ._edges ),
186
+ )
181
187
raise ValueError (msg )
182
- self ._visible_edges = visible_edges
188
+ self ._visible_edges = value
183
189
184
190
def get_path (self ):
185
191
'Return a path where the edges specificed by _visible_edges are drawn'
186
192
187
- codes = [Path .MOVETO ] * 4
188
- codes .append (Path .CLOSEPOLY )
193
+ codes = [Path .MOVETO ]
189
194
190
- for i , edge in enumerate ( self .EDGES , 1 ) :
195
+ for edge in self ._edges :
191
196
if edge in self ._visible_edges :
192
- codes [i ] = Path .LINETO
197
+ codes .append (Path .LINETO )
198
+ else :
199
+ codes .append (Path .MOVETO )
200
+
201
+ if Path .MOVETO not in codes [1 :]: # All sides are visible
202
+ codes [- 1 ] = Path .CLOSEPOLY
193
203
194
204
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
- )
205
+ [[0.0 , 0.0 ], [1.0 , 0.0 ], [1.0 , 1.0 ], [0.0 , 1.0 ], [0.0 , 0.0 ]],
206
+ codes ,
207
+ readonly = True
208
+ )
199
209
200
210
201
211
class Table (Artist ):
@@ -255,7 +265,7 @@ def __init__(self, ax, loc=None, bbox=None, **kwargs):
255
265
256
266
self ._texts = []
257
267
self ._cells = {}
258
- self ._drawLines = None
268
+ self ._edges = None
259
269
self ._autoRows = []
260
270
self ._autoColumns = []
261
271
self ._autoFontsize = True
@@ -269,20 +279,20 @@ def add_cell(self, row, col, *args, **kwargs):
269
279
""" Add a cell to the table. """
270
280
xy = (0 , 0 )
271
281
272
- cell = CustomCell (xy , visible_edges = self ._drawLines , * args , ** kwargs )
282
+ cell = CustomCell (xy , visible_edges = self .edges , * args , ** kwargs )
273
283
cell .set_figure (self .figure )
274
284
cell .set_transform (self .get_transform ())
275
285
276
286
cell .set_clip_on (False )
277
287
self ._cells [(row , col )] = cell
278
288
279
289
@property
280
- def drawLines (self ):
281
- return self ._drawLines
290
+ def edges (self ):
291
+ return self ._edges
282
292
283
- @drawLines .setter
284
- def drawLines (self , value ):
285
- self ._drawLines = value
293
+ @edges .setter
294
+ def edges (self , value ):
295
+ self ._edges = value
286
296
287
297
def _approx_text_height (self ):
288
298
return (self .FONTSIZE / 72.0 * self .figure .dpi /
@@ -520,14 +530,14 @@ def table(ax,
520
530
cellLoc = 'right' , colWidths = None ,
521
531
rowLabels = None , rowColours = None , rowLoc = 'left' ,
522
532
colLabels = None , colColours = None , colLoc = 'center' ,
523
- loc = 'bottom' , bbox = None , drawLines = 'BRTL' ,
533
+ loc = 'bottom' , bbox = None , edges = 'BRTL' ,
524
534
** kwargs ):
525
535
"""
526
536
TABLE(cellText=None, cellColours=None,
527
537
cellLoc='right', colWidths=None,
528
538
rowLabels=None, rowColours=None, rowLoc='left',
529
539
colLabels=None, colColours=None, colLoc='center',
530
- loc='bottom', bbox=None, drawLines ='BRTL')
540
+ loc='bottom', bbox=None, edges ='BRTL')
531
541
532
542
Factory function to generate a Table instance.
533
543
@@ -590,7 +600,7 @@ def table(ax,
590
600
591
601
# Now create the table
592
602
table = Table (ax , loc , bbox , ** kwargs )
593
- table .drawLines = drawLines
603
+ table .edges = edges
594
604
height = table ._approx_text_height ()
595
605
596
606
# Add the cells
0 commit comments