Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b68c05f

Browse files
Zair Mubashardkua
Zair Mubashar
authored andcommitted
Fixed issue with CustomCell's get_path() + setter for CustomCell's visible_edges + various style fixes
1 parent 6169f0c commit b68c05f

File tree

5 files changed

+49
-39
lines changed

5 files changed

+49
-39
lines changed

lib/matplotlib/table.py

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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

201211
class 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
Binary file not shown.
Binary file not shown.
Binary file not shown.

lib/matplotlib/tests/test_table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,6 @@ def test_diff_cell_table():
9898
loc='center',
9999
colLoc='center',
100100
rowLoc='center',
101-
drawLines=cell,
101+
edges=cell,
102102
)
103103
plt.tight_layout()

0 commit comments

Comments
 (0)