Skip to content

Commit 9563001

Browse files
authored
Merge pull request #7119 from efiring/tick_length_and_labels
BUG: adjust tick label location when tick length changes
2 parents f3ddb4e + 8582248 commit 9563001

File tree

5 files changed

+711
-170
lines changed

5 files changed

+711
-170
lines changed

lib/matplotlib/axis.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -300,33 +300,33 @@ def _apply_params(self, **kw):
300300
switches = [k for k in kw if k in switchkw]
301301
for k in switches:
302302
setattr(self, k, kw.pop(k))
303-
dirpad = [k for k in kw if k in ['pad', 'tickdir']]
304-
if dirpad:
303+
newmarker = [k for k in kw if k in ['size', 'width', 'pad', 'tickdir']]
304+
if newmarker:
305+
self._size = kw.pop('size', self._size)
306+
# Width could be handled outside this block, but it is
307+
# convenient to leave it here.
308+
self._width = kw.pop('width', self._width)
305309
self._base_pad = kw.pop('pad', self._base_pad)
310+
# apply_tickdir uses _size and _base_pad to make _pad,
311+
# and also makes _tickmarkers.
306312
self.apply_tickdir(kw.pop('tickdir', self._tickdir))
313+
self.tick1line.set_marker(self._tickmarkers[0])
314+
self.tick2line.set_marker(self._tickmarkers[1])
315+
for line in (self.tick1line, self.tick2line):
316+
line.set_markersize(self._size)
317+
line.set_markeredgewidth(self._width)
318+
# _get_text1_transform uses _pad from apply_tickdir.
307319
trans = self._get_text1_transform()[0]
308320
self.label1.set_transform(trans)
309321
trans = self._get_text2_transform()[0]
310322
self.label2.set_transform(trans)
311-
self.tick1line.set_marker(self._tickmarkers[0])
312-
self.tick2line.set_marker(self._tickmarkers[1])
313323
tick_kw = dict([kv for kv in six.iteritems(kw)
314324
if kv[0] in ['color', 'zorder']])
315325
if tick_kw:
316326
self.tick1line.set(**tick_kw)
317327
self.tick2line.set(**tick_kw)
318328
for k, v in six.iteritems(tick_kw):
319329
setattr(self, '_' + k, v)
320-
tick_list = [kv for kv
321-
in six.iteritems(kw) if kv[0] in ['size', 'width']]
322-
for k, v in tick_list:
323-
setattr(self, '_' + k, v)
324-
if k == 'size':
325-
self.tick1line.set_markersize(v)
326-
self.tick2line.set_markersize(v)
327-
else:
328-
self.tick1line.set_markeredgewidth(v)
329-
self.tick2line.set_markeredgewidth(v)
330330
label_list = [k for k in six.iteritems(kw)
331331
if k[0] in ['labelsize', 'labelcolor']]
332332
if label_list:
Binary file not shown.

0 commit comments

Comments
 (0)