class_docstr: Class to determine tick marks
  
  Parameters
  ----------
  axis : instance of AxisVisual
      The AxisVisual to generate ticks for.
class_docstr_tok: ["Class","to","determine","tick","marks","Parameters","--","--","--","--","--","axis",":","instance","of","AxisVisual","The","AxisVisual","to","generate","ticks","for","."]
docstr: Get the major ticks, minor ticks, and major labels
docstr_tok: ["Get","the","major","ticks",",","minor","ticks",",","and","major","labels"]
code: def _get_tick_frac_labels(self):
      """Get the major ticks, minor ticks, and major labels"""
      minor_num = 4  # number of minor ticks per major division
      if self.axis.scale_type == "linear":
          domain = self.axis.domain
          if domain[1] < domain[0]:
              flip = True
              domain = domain[::-1]
          else:
              flip = False
          offset = domain[0]
          scale = domain[1] - domain[0]
  
          transforms = self.axis.transforms
          length = (
              self.axis.pos[1] - self.axis.pos[0]
          )  # in logical coords
          n_inches = np.sqrt(np.sum(length**2)) / transforms.dpi
  
          major = _get_ticks_talbot(domain[0], domain[1], n_inches, 2)
  
          labels = ["%g" % x for x in major]
          majstep = major[1] - major[0]
          minor = []
          minstep = majstep / (minor_num + 1)
          minstart = 0 if self.axis._stop_at_major[0] else -1
          minstop = -1 if self.axis._stop_at_major[1] else 0
          for i in range(minstart, len(major) + minstop):
              maj = major[0] + i * majstep
              minor.extend(
                  np.linspace(
                      maj + minstep, maj + majstep - minstep, minor_num
                  )
              )
          major_frac = major - offset
          minor_frac = np.array(minor) - offset
          if scale != 0:  # maybe something better to do here?
              major_frac /= scale
              minor_frac /= scale
          use_mask = (major_frac > -0.0001) & (major_frac < 1.0001)
          major_frac = major_frac[use_mask]
          labels = [l for li, l in enumerate(labels) if use_mask[li]]
          minor_frac = minor_frac[
              (minor_frac > -0.0001) & (minor_frac < 1.0001)
          ]
          # Flip ticks coordinates if necessary :
          if flip:
              major_frac = 1 - major_frac
              minor_frac = 1 - minor_frac
      elif self.axis.scale_type == "logarithmic":
          return NotImplementedError
      elif self.axis.scale_type == "power":
          return NotImplementedError
      return major_frac, minor_frac, labels
  
imports: import math
  import numpy
  from .visual import CompoundVisual, updating_property
  from .line import LineVisual
  from .text import TextVisual
label_desc: Use image node_id 5 for calling the Ticker obj's underlying member method code with example usage: obj._get_tick_frac_labels() and returns: major_frac,  minor_frac,  labels, NotImplementedError, NotImplementedError