2020import matplotlib .ticker as mticker
2121import matplotlib .transforms as mtransforms
2222import matplotlib .units as munits
23+ from matplotlib .ticker import NullLocator
2324
2425_log = logging .getLogger (__name__ )
2526
@@ -2277,7 +2278,8 @@ def _get_ticks_position(self):
22772278 Helper for `XAxis.get_ticks_position` and `YAxis.get_ticks_position`.
22782279
22792280 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
22812283
22822284 - 1 if only tick1line and label1 are visible (which corresponds to
22832285 "bottom" for the x-axis and "left" for the y-axis);
@@ -2286,25 +2288,29 @@ def _get_ticks_position(self):
22862288 - "default" if only tick1line, tick2line and label1 are visible;
22872289 - "unknown" otherwise.
22882290 """
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+
22912297 if all (tick .tick1line .get_visible ()
22922298 and not tick .tick2line .get_visible ()
22932299 and tick .label1 .get_visible ()
22942300 and not tick .label2 .get_visible ()
2295- for tick in [ major , minor ] ):
2301+ for tick in representative_ticks ):
22962302 return 1
22972303 elif all (tick .tick2line .get_visible ()
22982304 and not tick .tick1line .get_visible ()
22992305 and tick .label2 .get_visible ()
23002306 and not tick .label1 .get_visible ()
2301- for tick in [ major , minor ] ):
2307+ for tick in representative_ticks ):
23022308 return 2
23032309 elif all (tick .tick1line .get_visible ()
23042310 and tick .tick2line .get_visible ()
23052311 and tick .label1 .get_visible ()
23062312 and not tick .label2 .get_visible ()
2307- for tick in [ major , minor ] ):
2313+ for tick in representative_ticks ):
23082314 return "default"
23092315 else :
23102316 return "unknown"
0 commit comments