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