docstr: tick_loc, tick_angle, tick_label, (optionally) tick_label
code: def get_tick_iterators(self, axes):
      """tick_loc, tick_angle, tick_label, (optionally) tick_label"""
  
      grid_finder = self.grid_helper.grid_finder
  
      lat_levs, lat_n, lat_factor = self.grid_info["lat_info"]
      lon_levs, lon_n, lon_factor = self.grid_info["lon_info"]
  
      lon_levs, lat_levs = np.asarray(lon_levs), np.asarray(lat_levs)
      if lat_factor is not None:
          yy0 = lat_levs / lat_factor
          dy = 0.001 / lat_factor
      else:
          yy0 = lat_levs
          dy = 0.001
  
      if lon_factor is not None:
          xx0 = lon_levs / lon_factor
          dx = 0.001 / lon_factor
      else:
          xx0 = lon_levs
          dx = 0.001
  
      _extremes = self.grid_helper._extremes
      xmin, xmax = sorted(_extremes[:2])
      ymin, ymax = sorted(_extremes[2:])
      if self.nth_coord == 0:
          mask = (ymin <= yy0) & (yy0 <= ymax)
          yy0 = yy0[mask]
      elif self.nth_coord == 1:
          mask = (xmin <= xx0) & (xx0 <= xmax)
          xx0 = xx0[mask]
  
      def transform_xy(x, y):
          x1, y1 = grid_finder.transform_xy(x, y)
          x2y2 = axes.transData.transform(
              np.array([x1, y1]).transpose()
          )
          x2, y2 = x2y2.transpose()
          return x2, y2
  
      # find angles
      if self.nth_coord == 0:
          xx0 = np.empty_like(yy0)
          xx0.fill(self.value)
  
          # yy0_ = yy0.copy()
  
          xx1, yy1 = transform_xy(xx0, yy0)
  
          xx00 = xx0.astype(float, copy=True)
          xx00[xx0 + dx > xmax] -= dx
          xx1a, yy1a = transform_xy(xx00, yy0)
          xx1b, yy1b = transform_xy(xx00 + dx, yy0)
  
          yy00 = yy0.astype(float, copy=True)
          yy00[yy0 + dy > ymax] -= dy
          xx2a, yy2a = transform_xy(xx0, yy00)
          xx2b, yy2b = transform_xy(xx0, yy00 + dy)
  
          labels = self.grid_info["lat_labels"]
          labels = [l for l, m in zip(labels, mask) if m]
  
      elif self.nth_coord == 1:
          yy0 = np.empty_like(xx0)
          yy0.fill(self.value)
  
          # xx0_ = xx0.copy()
          xx1, yy1 = transform_xy(xx0, yy0)
  
          yy00 = yy0.astype(float, copy=True)
          yy00[yy0 + dy > ymax] -= dy
          xx1a, yy1a = transform_xy(xx0, yy00)
          xx1b, yy1b = transform_xy(xx0, yy00 + dy)
  
          xx00 = xx0.astype(float, copy=True)
          xx00[xx0 + dx > xmax] -= dx
          xx2a, yy2a = transform_xy(xx00, yy0)
          xx2b, yy2b = transform_xy(xx00 + dx, yy0)
  
          labels = self.grid_info["lon_labels"]
          labels = [l for l, m in zip(labels, mask) if m]
  
      def f1():
          dd = np.arctan2(yy1b - yy1a, xx1b - xx1a)  # angle normal
          dd2 = np.arctan2(yy2b - yy2a, xx2b - xx2a)  # angle tangent
          mm = ((yy1b - yy1a) == 0.0) & (
              (xx1b - xx1a) == 0.0
          )  # mask where dd1 is not defined
          dd[mm] = dd2[mm] + np.pi / 2
  
          # dd += np.pi
          # dd = np.arctan2(xx2-xx1, angle_tangent-yy1)
          trans_tick = self.get_tick_transform(axes)
          tr2ax = trans_tick + axes.transAxes.inverted()
          for x, y, d, d2, lab in zip(xx1, yy1, dd, dd2, labels):
              c2 = tr2ax.transform_point((x, y))
              delta = 0.00001
              if (0.0 - delta <= c2[0] <= 1.0 + delta) and (
                  0.0 - delta <= c2[1] <= 1.0 + delta
              ):
                  d1 = d / 3.14159 * 180.0
                  d2 = d2 / 3.14159 * 180.0
                  # _mod = (d2-d1+180)%360
                  # if _mod < 180:
                  #    d1 += 180
                  ##_div, _mod = divmod(d2-d1, 360)
                  yield [x, y], d1, d2, lab
                  # , d2/3.14159*180.+da)
  
      return f1(), iter([])
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import six
  from six.moves import zip
  import numpy
  from matplotlib.transforms import Affine2D, IdentityTransform
  from .None import grid_helper_curvelinear
  from .axislines import AxisArtistHelper, GridHelperBase
  from .axis_artist import AxisArtist
  from .grid_finder import GridFinder
  from .grid_finder import ExtremeFinderSimple
  from .axislines import Axes
  from mpl_toolkits.axes_grid1.parasite_axes import host_axes_class_factory
  import matplotlib.axes
label_desc: Use image node_id 5 for calling the FixedAxisArtistHelper obj's underlying member method code with example usage: obj.get_tick_iterators(axes) and returns: f1,  iter, x2,  y2