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
@@ -2278,7 +2279,8 @@ def _get_ticks_position(self):
22782279 Helper for `XAxis.get_ticks_position` and `YAxis.get_ticks_position`.
22792280
22802281 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
22822284
22832285 - 1 if only tick1line and label1 are visible (which corresponds to
22842286 "bottom" for the x-axis and "left" for the y-axis);
@@ -2287,25 +2289,29 @@ def _get_ticks_position(self):
22872289 - "default" if only tick1line, tick2line and label1 are visible;
22882290 - "unknown" otherwise.
22892291 """
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+
22922298 if all (tick .tick1line .get_visible ()
22932299 and not tick .tick2line .get_visible ()
22942300 and tick .label1 .get_visible ()
22952301 and not tick .label2 .get_visible ()
2296- for tick in [ major , minor ] ):
2302+ for tick in representative_ticks ):
22972303 return 1
22982304 elif all (tick .tick2line .get_visible ()
22992305 and not tick .tick1line .get_visible ()
23002306 and tick .label2 .get_visible ()
23012307 and not tick .label1 .get_visible ()
2302- for tick in [ major , minor ] ):
2308+ for tick in representative_ticks ):
23032309 return 2
23042310 elif all (tick .tick1line .get_visible ()
23052311 and tick .tick2line .get_visible ()
23062312 and tick .label1 .get_visible ()
23072313 and not tick .label2 .get_visible ()
2308- for tick in [ major , minor ] ):
2314+ for tick in representative_ticks ):
23092315 return "default"
23102316 else :
23112317 return "unknown"
0 commit comments