Skip to content

Commit 73ee9f2

Browse files
committed
BUG: Fix Skew tick implementation.
Previous fixes broke upper ticks so that they never showed up. This comes from checking the default position, 0, against the upper range. Instead, use a sentinel of None for the default position. If a tick has the default position, avoid checking against the interval.
1 parent 3818397 commit 73ee9f2

File tree

2 files changed

+36
-14
lines changed

2 files changed

+36
-14
lines changed

examples/api/skewt.py

+18-7
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,30 @@
2424
# The sole purpose of this class is to look at the upper, lower, or total
2525
# interval as appropriate and see what parts of the tick to draw, if any.
2626
class SkewXTick(maxis.XTick):
27+
def update_position(self, loc):
28+
# This ensures that the new value of the location is set before
29+
# any other updates take place
30+
self._loc = loc
31+
super(SkewXTick, self).update_position(loc)
32+
33+
def _has_default_loc(self):
34+
return self.get_loc() is None
35+
2736
def _need_lower(self):
28-
return transforms.interval_contains(self.axes.lower_xlim,
29-
self.get_loc())
37+
return (self._has_default_loc() or
38+
transforms.interval_contains(self.axes.lower_xlim,
39+
self.get_loc()))
3040

3141
def _need_upper(self):
32-
return transforms.interval_contains(self.axes.upper_xlim,
33-
self.get_loc())
42+
return (self._has_default_loc() or
43+
transforms.interval_contains(self.axes.upper_xlim,
44+
self.get_loc()))
3445

3546
@property
3647
def gridOn(self):
37-
return (self._gridOn and
48+
return (self._gridOn and (self._has_default_loc() or
3849
transforms.interval_contains(self.get_view_interval(),
39-
self.get_loc()))
50+
self.get_loc())))
4051

4152
@gridOn.setter
4253
def gridOn(self, value):
@@ -82,7 +93,7 @@ def get_view_interval(self):
8293
# as well as create instances of the custom tick
8394
class SkewXAxis(maxis.XAxis):
8495
def _get_tick(self, major):
85-
return SkewXTick(self.axes, 0, '', major=major)
96+
return SkewXTick(self.axes, None, '', major=major)
8697

8798
def get_view_interval(self):
8899
return self.axes.upper_xlim[0], self.axes.lower_xlim[1]

lib/matplotlib/tests/test_skew.py

+18-7
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,30 @@
2020
# The sole purpose of this class is to look at the upper, lower, or total
2121
# interval as appropriate and see what parts of the tick to draw, if any.
2222
class SkewXTick(maxis.XTick):
23+
def update_position(self, loc):
24+
# This ensures that the new value of the location is set before
25+
# any other updates take place
26+
self._loc = loc
27+
super(SkewXTick, self).update_position(loc)
28+
29+
def _has_default_loc(self):
30+
return self.get_loc() is None
31+
2332
def _need_lower(self):
24-
return transforms.interval_contains(self.axes.lower_xlim,
25-
self.get_loc())
33+
return (self._has_default_loc() or
34+
transforms.interval_contains(self.axes.lower_xlim,
35+
self.get_loc()))
2636

2737
def _need_upper(self):
28-
return transforms.interval_contains(self.axes.upper_xlim,
29-
self.get_loc())
38+
return (self._has_default_loc() or
39+
transforms.interval_contains(self.axes.upper_xlim,
40+
self.get_loc()))
3041

3142
@property
3243
def gridOn(self):
33-
return (self._gridOn and
44+
return (self._gridOn and (self._has_default_loc() or
3445
transforms.interval_contains(self.get_view_interval(),
35-
self.get_loc()))
46+
self.get_loc())))
3647

3748
@gridOn.setter
3849
def gridOn(self, value):
@@ -78,7 +89,7 @@ def get_view_interval(self):
7889
# as well as create instances of the custom tick
7990
class SkewXAxis(maxis.XAxis):
8091
def _get_tick(self, major):
81-
return SkewXTick(self.axes, 0, '', major=major)
92+
return SkewXTick(self.axes, None, '', major=major)
8293

8394
def get_view_interval(self):
8495
return self.axes.upper_xlim[0], self.axes.lower_xlim[1]

0 commit comments

Comments
 (0)