@@ -153,49 +153,59 @@ class CustomCell(Cell):
153153
154154 """
155155
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+ }
162162
163163 def __init__ (self , * args , ** kwargs ):
164-
165164 visible_edges = kwargs .pop ('visible_edges' )
166165 Cell .__init__ (self , * args , ** kwargs )
166+ self .visible_edges = visible_edges
167167
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 ]
172178 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+ )
181187 raise ValueError (msg )
182- self ._visible_edges = visible_edges
188+ self ._visible_edges = value
183189
184190 def get_path (self ):
185191 'Return a path where the edges specificed by _visible_edges are drawn'
186192
187- codes = [Path .MOVETO ] * 4
188- codes .append (Path .CLOSEPOLY )
193+ codes = [Path .MOVETO ]
189194
190- for i , edge in enumerate ( self .EDGES , 1 ) :
195+ for edge in self ._edges :
191196 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
193203
194204 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+ )
199209
200210
201211class Table (Artist ):
@@ -255,7 +265,7 @@ def __init__(self, ax, loc=None, bbox=None, **kwargs):
255265
256266 self ._texts = []
257267 self ._cells = {}
258- self ._drawLines = None
268+ self ._edges = None
259269 self ._autoRows = []
260270 self ._autoColumns = []
261271 self ._autoFontsize = True
@@ -269,20 +279,20 @@ def add_cell(self, row, col, *args, **kwargs):
269279 """ Add a cell to the table. """
270280 xy = (0 , 0 )
271281
272- cell = CustomCell (xy , visible_edges = self ._drawLines , * args , ** kwargs )
282+ cell = CustomCell (xy , visible_edges = self .edges , * args , ** kwargs )
273283 cell .set_figure (self .figure )
274284 cell .set_transform (self .get_transform ())
275285
276286 cell .set_clip_on (False )
277287 self ._cells [(row , col )] = cell
278288
279289 @property
280- def drawLines (self ):
281- return self ._drawLines
290+ def edges (self ):
291+ return self ._edges
282292
283- @drawLines .setter
284- def drawLines (self , value ):
285- self ._drawLines = value
293+ @edges .setter
294+ def edges (self , value ):
295+ self ._edges = value
286296
287297 def _approx_text_height (self ):
288298 return (self .FONTSIZE / 72.0 * self .figure .dpi /
@@ -520,14 +530,14 @@ def table(ax,
520530 cellLoc = 'right' , colWidths = None ,
521531 rowLabels = None , rowColours = None , rowLoc = 'left' ,
522532 colLabels = None , colColours = None , colLoc = 'center' ,
523- loc = 'bottom' , bbox = None , drawLines = 'BRTL' ,
533+ loc = 'bottom' , bbox = None , edges = 'BRTL' ,
524534 ** kwargs ):
525535 """
526536 TABLE(cellText=None, cellColours=None,
527537 cellLoc='right', colWidths=None,
528538 rowLabels=None, rowColours=None, rowLoc='left',
529539 colLabels=None, colColours=None, colLoc='center',
530- loc='bottom', bbox=None, drawLines ='BRTL')
540+ loc='bottom', bbox=None, edges ='BRTL')
531541
532542 Factory function to generate a Table instance.
533543
@@ -590,7 +600,7 @@ def table(ax,
590600
591601 # Now create the table
592602 table = Table (ax , loc , bbox , ** kwargs )
593- table .drawLines = drawLines
603+ table .edges = edges
594604 height = table ._approx_text_height ()
595605
596606 # Add the cells
0 commit comments