20
20
import matplotlib .ticker as mticker
21
21
import matplotlib .transforms as mtransforms
22
22
import matplotlib .units as munits
23
+ from matplotlib .ticker import NullLocator
23
24
24
25
_log = logging .getLogger (__name__ )
25
26
@@ -2278,7 +2279,8 @@ def _get_ticks_position(self):
2278
2279
Helper for `XAxis.get_ticks_position` and `YAxis.get_ticks_position`.
2279
2280
2280
2281
Check the visibility of tick1line, label1, tick2line, and label2 on
2281
- the first major and the first minor ticks, and return
2282
+ the first major and the first minor ticks, provided these ticks are used
2283
+ i.e. the corresponding locator is not a NullLocator, and return
2282
2284
2283
2285
- 1 if only tick1line and label1 are visible (which corresponds to
2284
2286
"bottom" for the x-axis and "left" for the y-axis);
@@ -2287,25 +2289,29 @@ def _get_ticks_position(self):
2287
2289
- "default" if only tick1line, tick2line and label1 are visible;
2288
2290
- "unknown" otherwise.
2289
2291
"""
2290
- major = self .majorTicks [0 ]
2291
- minor = self .minorTicks [0 ]
2292
+ representative_ticks = []
2293
+ if not isinstance (self .get_major_locator (), NullLocator ):
2294
+ representative_ticks .append (self .majorTicks [0 ])
2295
+ if not isinstance (self .get_minor_locator (), NullLocator ):
2296
+ representative_ticks .append (self .minorTicks [0 ])
2297
+
2292
2298
if all (tick .tick1line .get_visible ()
2293
2299
and not tick .tick2line .get_visible ()
2294
2300
and tick .label1 .get_visible ()
2295
2301
and not tick .label2 .get_visible ()
2296
- for tick in [ major , minor ] ):
2302
+ for tick in representative_ticks ):
2297
2303
return 1
2298
2304
elif all (tick .tick2line .get_visible ()
2299
2305
and not tick .tick1line .get_visible ()
2300
2306
and tick .label2 .get_visible ()
2301
2307
and not tick .label1 .get_visible ()
2302
- for tick in [ major , minor ] ):
2308
+ for tick in representative_ticks ):
2303
2309
return 2
2304
2310
elif all (tick .tick1line .get_visible ()
2305
2311
and tick .tick2line .get_visible ()
2306
2312
and tick .label1 .get_visible ()
2307
2313
and not tick .label2 .get_visible ()
2308
- for tick in [ major , minor ] ):
2314
+ for tick in representative_ticks ):
2309
2315
return "default"
2310
2316
else :
2311
2317
return "unknown"
0 commit comments